1

マウスダウンイベントを検出すると、ウィンドウの特定の場所に楕円を描画しようとしています。

楕円は問題なく描画されますが、描画するとすぐに消えます。

アプリケーションがWM_PAINTメッセージを継続的に処理しているのに、アプリケーションが各ペイントメッセージに楕円を描画していないことに関係していると思います。

楕円がウィンドウの特定の座標に描画されたままになるようにするにはどうすればよいですか?

    private void rtbLogicCode_MouseDown(object sender, MouseEventArgs e)
    {
        Point p = new Point(e.X, e.Y);
        if (p.X < 39 && p.Y < 817)
        {
            LinearGradientBrush lgb = new LinearGradientBrush(new Rectangle(0, p.Y, 15, 15), Color.LightPink, Color.Red, 45);

            System.Drawing.Graphics formGraphics = rtbLogicCode.CreateGraphics();
            formGraphics.FillEllipse(lgb, 0, p.Y, 15, 15);
            this.Invalidate();
            lgb.Dispose();
            formGraphics.Dispose();
        }
        ...
    }
4

1 に答える 1

3

通常のパターンは、WM_MOUSEDOWNハンドラーが場所を記録し、ウィンドウを無効にすることです。次に、WM_PAINTハンドラーが情報を取得し、適切に描画します。

于 2012-06-27T05:06:07.423 に答える