0

これまでのところ、私は答えを得ていません.誰かがこれを修正する方法を知っていれば..私に知らせてください. ありがとう

次のような状況があります。

UI の中央に赤い X が付いた 2 つの楕円を描画します。

中央の楕円を使用して、画面上の好きな場所にドラッグしています。これは非常にうまく機能し、赤い X をクリックしないと、マウスを動かすたびに楕円が再描画されるのがわかります。

私が抱えている問題はこれです:

赤い X をクリックするたびに、楕円が再描画されなくなります。しかし、LeftButton がアップすると、Ellipses は適切な場所に移動します。

何が起こっているのか誰にもわかりませんか?

前もって感謝します。

[編集1]

    private void canvasArea_MouseMove(object sender, MouseEventArgs e)
    {
        if ((e.LeftButton == MouseButtonState.Pressed) && flag_centerEllipse_MouseLeftButtonDown)
        {
            flag_UpdateEllipseCenter = true;
            UpdateEllipseCenter();
            DrawingEllipse();
        }
        else
            flag_UpdateEllipseCenter = false;
    }

両方の条件を満たしていると確信しています。

[編集2]

    private void centerEllipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        flag_centerEllipse_MouseLeftButtonDown = true;
    }

その変数が true であることを確認します。

[編集3]

私の問題を明確にするために:http://s14.postimg.org/6sajsb5tp/ellipse.png

[編集4]

xml コード:

    <Canvas Background="Transparent" Name="canvasArea" MouseLeftButtonDown="canvasArea_MouseLeftButtonDown" MouseMove="canvasArea_MouseMove" MouseLeftButtonUp="canvasArea_MouseLeftButtonUp">
        <TextBlock Canvas.Left="612" Canvas.Top="577" Height="23" Name="tBCreationTime" Text="TextBlock" />
        <TextBlock Canvas.Left="447" Canvas.Top="577" Height="23" Name="tBCoordinates" Text="TextBlock" Width="160" />
        <Ellipse Name="externalEllipse" Height="0" Width="0" MouseLeftButtonDown="externalEllipse_MouseLeftButtonDown" MouseLeftButtonUp="externalEllipse_MouseLeftButtonUp"/>
        <Ellipse Name="centerEllipse" Height="0" Width="0" MouseLeftButtonDown="centerEllipse_MouseLeftButtonDown" MouseLeftButtonUp="centerEllipse_MouseLeftButtonUp"/>
        <Line Name="targetHorizontal"></Line>
        <Line Name="targetVertical"></Line>
    </Canvas>

楕円の中心を更新する:

    private void UpdateEllipseCenter()
    {
        Point newEllipseCenter = Mouse.GetPosition(canvasArea);

        ellipseCenter = newEllipseCenter;
    }

楕円と線の描画:

    private void DrawingEllipse()
    {
        bool addRmvObjcts = true;

        if (mousePositionDown.X != mousePositionUp.X && mousePositionDown.Y != mousePositionUp.Y)
        {
            addRmvObjcts = AddRemoveCanvasObjects(addRmvObjcts);

            if (flag_UpdateEllipseSize || flag_UpdateEllipseCenter)
            {
                externalEllipse.Height = externalEllipse.Width = drawHypotenuse;
            }
            else
            {
                double diffX = mousePositionUp.X - mousePositionDown.X;
                double diffY = mousePositionUp.Y - mousePositionDown.Y;

                drawHypotenuse = Math.Sqrt(Math.Pow((diffX), 2) + Math.Pow((diffY), 2));
                externalEllipse.Height = externalEllipse.Width = drawHypotenuse;

                ellipseCenter.X = ((mousePositionDown.X + ((mousePositionUp.X - mousePositionDown.X) / 2)));
                ellipseCenter.Y = ((mousePositionDown.Y + ((mousePositionUp.Y - mousePositionDown.Y) / 2)));
            }

            AddRemoveCanvasObjects(addRmvObjcts);
            SettingObjectsPosition();
        }
    }
4

0 に答える 0