我正在尝试在检测到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();
}
...
}
答案 0 :(得分:3)
通常的模式是你的WM_MOUSEDOWN处理程序只记录位置并使窗口无效。然后WM_PAINT处理程序检索信息并适当地绘制。