【问题标题】:Why does square angle occur while drawing an ellipse in C#?为什么在C#中绘制椭圆时会出现方角?
【发布时间】: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() 事件。处理该事件以绘制图形。

标签: c# ellipse


【解决方案1】:

我认为您没有擦除先前绘制的椭圆,因此,当用户拖动时,您会看到所有椭圆。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2016-04-10
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多