1

我试图在检测到 mousedown 事件后在窗口的特定位置绘制一个椭圆。

椭圆被绘制没有任何问题,但它在绘制后立即消失。

我认为这与应用程序不断处理 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 回答