Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WinForms应用程序中创建同心圆图案?_C#_.net_Winforms - Fatal编程技术网

C# 如何在WinForms应用程序中创建同心圆图案?

C# 如何在WinForms应用程序中创建同心圆图案?,c#,.net,winforms,C#,.net,Winforms,我很难把这些圆做成同心的形状。例如,下一个圆越大,然后越大,依此类推。有点像地核、地核、地核和地壳 以下是我的全部代码: namespace ClickAppearBalls { public partial class Form1 : Form { private Random randClick; private Graphics paper; private Pen pen; public Form1()

我很难把这些圆做成同心的形状。例如,下一个圆越大,然后越大,依此类推。有点像地核、地核、地核和地壳

以下是我的全部代码:

namespace ClickAppearBalls
{
    public partial class Form1 : Form
    {
        private Random randClick;
        private Graphics paper;
        private Pen pen;
        public Form1()
        {
            InitializeComponent();
            randClick = new Random();
            paper = picCanvas.CreateGraphics();

        }

        private void picCanvas_Click(object sender, EventArgs e)
        {
            int x, y, size1, size2;

            x = picCanvas.Height / 2;
            y = picCanvas.Width / 2;

            Color color = Color.FromArgb(randClick.Next(0, 256), randClick.Next(0, 256), randClick.Next(0, 256));
            Pen pen = new Pen(color);
            pen.Width = 3;
            size1 = 30;
            size2 = 30;
            paper.DrawEllipse(pen, x, y, size1, size2);
        }
    }
}

您需要在类上定义size变量,以便在连续单击时使用它。然后你需要在每次点击时增加它

namespace ClickAppearBalls
{
    public partial class Form1 : Form
    {
        private Random randClick;
        private Graphics paper;
        private Pen pen;
        private int circleSize = 30;

        public Form1()
        {
            InitializeComponent();
            randClick = new Random();
            paper = picCanvas.CreateGraphics();

        }

        private void picCanvas_Click(object sender, EventArgs e)
        {
            int x, y;

            x = picCanvas.Height / 2;
            y = picCanvas.Width / 2;

            Color color = Color.FromArgb(randClick.Next(0, 256), randClick.Next(0, 256), randClick.Next(0, 256));
            Pen pen = new Pen(color);
            pen.Width = 3;
            paper.DrawEllipse(pen, x - circleSize/2, y - circleSize/2, circleSize, circleSize);

            circleSize += 10; // increase size here
        }
    }
}

实际上,你需要从外面开始收缩,因为新层将覆盖旧层,所以如果你想看到两层(或重新绘制内层),新层必须更小。@ScottChamberlain否,因为圆圈没有填充。我检查过了,它是有效的,虽然我还必须移动圆圈的中间点。对,我在想一个不同的函数。上面的建议是有效的,但是圆圈看起来好像点击了右下角,我怎么能让它在中间扩展,而不会重叠任何想法。谢谢你,盖伊。我几分钟前就修好了。需要将
x-circleSize/2、y-circleSize/2
作为圆的中点。