1

MouseMove() イベント中に画面に楕円を描画しようとしていますが、開始点から現在のマウス位置までの最新の楕円のみを描画したいと考えています。現時点では、登録されているすべてのマウス位置に対して楕円を描いています。MouseDown() および MouseUp() イベントを使用するだけで、楕円を表示せずに簡単に描画できますが、ユーザーがマウスを動かしたときに楕円を見ることができるようにしたいので、彼らがそれをどこに置いているかを正確に知っています。どうすればこれを達成できるか知っている人はいますか?

私の現在のコードは次のとおりです。

private void pnlDraw_MouseDown(object sender, MouseEventArgs e)
{
    initialX = e.X;
    initialY = e.Y;
    previousX = e.X;
    previousY = e.Y;
    isPainting = true;
}

private void pnlDraw_MouseMove(object sender, MouseEventArgs e)
{
    if (isPainting)
    {
        switch (currentDrawType)
        {

            case DRAWTYPE.ELLIPSE:
            {
                DrawEllipse(e);
                break;
            }
            default:
            {
                break;
            }
        }
    }
}

private void DrawEllipse(MouseEventArgs e)
{
    pen = new Pen(Color.Black);
    Graphics graphics = pnlDraw.CreateGraphics();
    graphics.DrawEllipse(pen, initialX, initialY, e.X - initialX, e.Y - initialY);

    previousX = e.X;
    previousY = e.Y;
    graphics.Dispose();
}

どんな助けでも大歓迎です!

4

1 に答える 1