6 votos

Mostrar comentarios "Tartamudea" al mover características

Tengo una herramienta personalizada para mover las características que implementa IDisplayFeedback y la geometría específica de las Coclases a mostrar al usuario donde se están moviendo en la entidad.

    IMovePolygonFeedback polygonFeedback;
    bool feedbackStarted;

    public override void OnMouseDown(int Button, int Shift, int X, int Y)
    {
        feedbackStarted = false;

        //A BUNCH OF STUFF HERE TO SELECT A FEATURE ON MOUSEDOWN

        geometry = feature.Shape;

        polygonFeedback = new MovePolygonFeedbackClass();
        polygonFeedback.Display = doc.ActiveView.ScreenDisplay;
        polygonFeedback.Start(geometry as IPolygon, doc.CurrentLocation);
        feedbackStarted = true;
    }

    public override void OnMouseMove(int Button, int Shift, int X, int Y)
    {
        IPoint point = doc.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y);
        if (polygonFeedback != null && feedbackStarted)
            polygonFeedback.MoveTo(point);
    }

Lo que a veces sucede cuando la mousedown y mousemove suceder rápidamente, es que la pantalla de información se entrecorta por un segundo, dejando una (lo supongo) gráfico, luego continúa con un nuevo gráfico en movimiento con el ratón hasta mouseup. Se ve un poco como esto:

http://i.imgur.com/99fj8.png

En mouseup puedo cambiar la función de dar forma a la nueva posición y el almacén de la entidad. Me unión el original de la función de extensión con la nueva característica de medida y pasar sobre un parcial de actualización. El problema es que a veces las partes de la "tartamudeo" no están en el sobre, así que conseguir dangly bits:

http://i.imgur.com/v1oxx.png

Estoy tratando de evitar la recta actualiza pero estos dangly bits no son bonitas y no desaparecen hasta que se produce una actualización (forzado por el usuario o mover/pan, etc.)

Preguntas:

  1. ¿Alguien sabe por qué el "tartamudeo" que está sucediendo y cómo se puede prevenir?
  2. Hay una manera parcial de la actualización de la dangly bits?
  3. ¿Qué es la retroalimentación? Es un gráfico? Puedo trampa durante el onmove para agregarlo a la parcial de actualización sobre?
  4. Hay un infintely mejor manera de hacer esto que estoy perdieron?

Ayuda!

1voto

auramo Puntos 161

Usted puede intentar llamar IScreenDisplay.UpdateWindow() en su OnMouseMove método, puede que no funcione en absoluto pero es una cosa fácil de probar.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X