如何获得连续数字生成器?

时间:2016-04-11 03:30:11

标签: c#

我正在创建一个程序,可以在您单击的位置绘制随机生成的圆圈大小。如果您移动鼠标将单击左键,它将留下随机大小的圆圈。

但是,当你移动鼠标时,我希望这些圆圈变得比较小。例如,从一个大小为20的圆圈开始,而不是增加一个圆圈,这样下一个圆圈将是21比22大于23等。当它达到80时,转动它,然后去80,79,78,77,76等。

这是随机生成的圆圈的代码。

我尝试了几种不同的方式,但我只是一个学习者。感谢您提供的任何帮助。

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            Random rand = new Random();

            int width = this.ClientSize.Width;
            int length = this.ClientSize.Height;
            Graphics paper = pictureBox1.CreateGraphics();
            Pen pen = new Pen(colorDialog1.Color, 2);

            int sizeCircle = rand.Next(20, 80);

            int mouseX = e.X - (sizeCircle/2) ;
            int mouseY = e.Y - (sizeCircle/2) ;

            paper.DrawEllipse(pen, mouseX, mouseY, sizeCircle, sizeCircle);

1 个答案:

答案 0 :(得分:0)

也许你可以尝试这样的事情......

在事件处理程序之外声明大小变量,以便跟踪其值..

bool enlarge = true; // flag to identitify if the size should enlarge or not
int circle_size = 10; // initial size
int circle_size_change = 5; // size value change
int max_size = 80; // max size
int min_size = 10; // min size
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        Random rand = new Random();

        int width = this.ClientSize.Width;
        int length = this.ClientSize.Height;
        Graphics paper = pictureBox1.CreateGraphics();
        Pen pen = new Pen(colorDialog1.Color, 2);

        if(enlarge)
        { 
           if(circle_size + circle_size_change > max_size)
           {
               enlarge = false;
           }
        }
        else
        {
           if(circle_size - circle_size_change < min_size)
           {
               enlarge = true;      
           }
        }

        circle_size = enlarge ? circle_size + circle_size_change : circle_size - circle_size_change;

        int mouseX = e.X - (circle_size/2) ;
        int mouseY = e.Y - (circle_size/2) ;

        paper.DrawEllipse(pen, mouseX, mouseY, sizeCircle, sizeCircle);