c# - 为什么画圈后颜色会变?

标签 c# winforms picturebox

为什么画圈后颜色会变? ,事实上,我画了圆圈,但我的问题是每次双击后,下一个圆圈的颜色从蓝色变为背景色。

public Form1()
    {
        InitializeComponent();
        pictureBox1.Paint += new PaintEventHandler(pic_Paint);
    }

    public Point positionCursor { get; set; }
    private List<Point> points = new List<Point>();
    public int circleNumber { get; set; }

    private void pictureBox1_DoubleClick(object sender, EventArgs e)
    {
        positionCursor = this.PointToClient(new Point(Cursor.Position.X - 25, Cursor.Position.Y - 25));

        points.Add(positionCursor);

        pictureBox1.Invalidate();
    }

    private void pic_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        g.SmoothingMode = SmoothingMode.AntiAlias;

        foreach (Point pt in points)
        {
            Pen p = new Pen(Color.Tomato, 2);

            g.FillEllipse(Brushes.Blue, positionCursor.X, positionCursor.Y, 20, 20);

            g.DrawEllipse(p, pt.X, pt.Y, 20, 20);

            p.Dispose();
        }
    }

enter image description here

最佳答案

您正确绘制了椭圆,但您总是只填充其中一个(最后添加的一个,在光标位置)。

// This is ok
g.DrawEllipse(p, pt.X, pt.Y, 20, 20);

// You should use pt.X and pt.Y here
g.FillEllipse(Brushes.Blue, positionCursor.X, positionCursor.Y, 20, 20);

关于c# - 为什么画圈后颜色会变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38331633/

相关文章:

.net - 为什么 WinForms Control.Bottom 和 Control.Right 是只读的?

mysql - 如何将Datagridview中当前选定的行插入到数据库

c# - 无需使用 API 或 WMI 即可获取监视器显示名称?

c# - 不使用 keystore 的客户端证书

c# - 是否有用于(屏幕)视频录制的免费 C# 库?

c# - 如何从 Fontfamily 中获取准确的字体?

c# - Silverlight 编程绘图(从 Windows 窗体转换为 Silverlight)

c# - 如何在放大的图像上绘图?

c# - 通过 UPC 查找商品的亚马逊网络服务

c# - 为什么 DateTime.Now.TimeOfDay.ToString ("HH:mm:ss.ffffff") 抛出 FormatException?