【发布时间】:2021-12-09 22:16:18
【问题描述】:
我问这个问题的原因在图片中:
由于某种原因,在使用 System.Drawing 绘制椭圆时会出现方角。下面你可以看到我是如何绘制它的。我还没有在一个视频(如何制作一个简单的图形编辑器)中找到解决方案,但在绘制椭圆期间出现平方角,然后消失。完整代码:https://pastebin.com/465eD7Zf 在 NET Framework 4.7.2 和 .NET 5 上尝试过。FillRectangle 有效。
private void paintBox_MouseMove(object sender, MouseEventArgs e)
{
if (draw)
{
Graphics g = paintBox.CreateGraphics();
Item currItem = (Item)choice.SelectedItem;
switch (currItem)
{
case Item.Rectangle:
g.FillRectangle(new SolidBrush(showColor.BackColor), x, y, e.X - x, e.Y - y);
break;
case Item.Ellipse:
g.FillEllipse(new SolidBrush(showColor.BackColor), x, y, e.X - x, e.Y - y); // ???
break;
}
g.Dispose();
}
}
【问题讨论】:
-
使用 CreateGraphics() 是一种臭名昭著的绘画方式。使用 Paint 事件 Invalidate() 更新绘图。
-
提示:不要在鼠标移动时绘图!!!! Windows 通过向您的应用发送
WM_PAINT消息来处理绘图,这反过来会在窗体和每个控件上触发.Paint()事件。处理该事件以绘制图形。