Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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# 如何在PictureBox中绘制带间隔的椭圆_C#_.net_Winforms_Picturebox - Fatal编程技术网

C# 如何在PictureBox中绘制带间隔的椭圆

C# 如何在PictureBox中绘制带间隔的椭圆,c#,.net,winforms,picturebox,C#,.net,Winforms,Picturebox,我想用椭圆做一个简单的模拟。在用户界面中,将有一个按钮。用户将按下按钮,然后每隔1秒,椭圆将被绘制到pictureBox。就像一个红绿灯 我想我需要使用计时器事件,但不知道如何使用。 我怎样才能做到呢 我最诚挚的问候 代码工作: public void Button1_Click(Object sender, EventArgs e) { DrawMap ortamcizdir = new DrawMap(p_box_map, bmp, ZoomControl, panel1); D

我想用椭圆做一个简单的模拟。在用户界面中,将有一个按钮。用户将按下按钮,然后每隔1秒,椭圆将被绘制到pictureBox。就像一个红绿灯

我想我需要使用计时器事件,但不知道如何使用。 我怎样才能做到呢

我最诚挚的问候

代码工作

public void Button1_Click(Object sender, EventArgs e)
{
   DrawMap ortamcizdir = new DrawMap(p_box_map, bmp, ZoomControl, panel1);
   DrawCell hucrecizdir = new DrawCell (p_box_map, bmp, a, ZoomControl, ZoomKontrolBolen);
}

class DrawCell
{
   for (int z = 0; z < Ortamlar.HucreSayisi; z++)
   {
         Pen Kalem = new Pen(Brushes.CadetBlue);
         Rectangle rect = new Rectangle(((Ortamlar.HUCREKorX[z] / ScaleFactor - Ortamlar.HUCREYaricap[z] / ScaleFactor)
                        * ZoomKontrolCarpan) / ZoomKontrolBolen, (Ortamlar.HUCREKorY[z] / ScaleFactor - Ortamlar.HUCREYaricap[z] / ScaleFactor) *
                        ZoomKontrolCarpan / ZoomKontrolBolen, (2 * Ortamlar.HUCREYaricap[z] / ScaleFactor) * ZoomKontrolCarpan / ZoomKontrolBolen
                        , (2 * Ortamlar.HUCREYaricap[z] / ScaleFactor) * ZoomKontrolCarpan / ZoomKontrolBolen);

         if (Ortamlar.HUCREYZ[z] == "001:400")
         {
                g.DrawString(Ortamlar.HUCREKB[z].ToString(), Font, Brushes.Black, ((Ortamlar.HUCREKorX[z] / ScaleFactor)
                    * ZoomKontrolCarpan) / ZoomKontrolBolen, 600 - (Ortamlar.HUCREKorY[z] / ScaleFactor) *
                    ZoomKontrolCarpan / ZoomKontrolBolen);
                g.MultiplyTransform(new Matrix(1, 0, 0, -1, 0, 600));
                g.DrawEllipse(Kalem, rect);

                g.FillEllipse(Brushes.Wheat, rect);
                g.ResetTransform();

                picturebox1.Image = bmp;
                bmp1 = (Bitmap)picturebox1.Image;
          }
          if (Ortamlar.HUCREYZ[z] == "401:800")
          {
                        g.DrawString(Ortamlar.HUCREKB[z].ToString(), Font, Brushes.Black, ((Ortamlar.HUCREKorX[z] / ScaleFactor)
                    * ZoomKontrolCarpan) / ZoomKontrolBolen, 600 - (Ortamlar.HUCREKorY[z] / ScaleFactor) *
                    ZoomKontrolCarpan / ZoomKontrolBolen);
                        g.MultiplyTransform(new Matrix(1, 0, 0, -1, 0, 600));
                        g.DrawEllipse(Kalem, rect);

                        g.FillEllipse(Brushes.Yellow, rect);

                        g.ResetTransform();
                        picturebox1.Image = bmp;
                        bmp2 = (Bitmap)picturebox1.Image;
          }
          if (Ortamlar.HUCREYZ[z] == "801:120")
          {
                        g.DrawString(Ortamlar.HUCREKB[z].ToString(), Font, Brushes.Black, ((Ortamlar.HUCREKorX[z] / ScaleFactor)
                    * ZoomKontrolCarpan) / ZoomKontrolBolen, 600 - (Ortamlar.HUCREKorY[z] / ScaleFactor) *
                    ZoomKontrolCarpan / ZoomKontrolBolen);
                        g.MultiplyTransform(new Matrix(1, 0, 0, -1, 0, 600));
                        g.DrawEllipse(Kalem, rect);

                        g.FillEllipse(Brushes.Green, rect);
                        g.ResetTransform();

                        picturebox1.Image = bmp;
                        bmp3 = (Bitmap)picturebox1.Image;
          }
          if (Ortamlar.HUCREYZ[z] == "121:161")
          {
                        g.DrawString(Ortamlar.HUCREKB[z].ToString(), Font, Brushes.Black, ((Ortamlar.HUCREKorX[z] / ScaleFactor)
                    * ZoomKontrolCarpan) / ZoomKontrolBolen, 600 - (Ortamlar.HUCREKorY[z] / ScaleFactor) *
                        ZoomKontrolCarpan / ZoomKontrolBolen);
                        g.MultiplyTransform(new Matrix(1, 0, 0, -1, 0, 600));
                        g.DrawEllipse(Kalem, rect);

                        g.FillEllipse(Brushes.Blue, rect);

                        g.ResetTransform();
                        picturebox1.Image = bmp;
                        bmp4 = (Bitmap)picturebox1.Image;
          }
    }
}
public void按钮1\u单击(对象发送者,事件参数e)
{
DrawMap ortamcizdir=新的DrawMap(p_box_map,bmp,ZoomControl,panel1);
DrawCell hucrecizdir=新的DrawCell(p_box_map、bmp、a、ZoomControl、ZoomControl、ZoomControl-Bolen);
}
类牵引单元
{
对于(int z=0;z
我不太明白你提问的目的,但我猜你可以通过阅读这些链接接近目的

将运行您需要了解的有关计时器控件的大部分信息

本教程将让您了解绘制椭圆的方法

关于如何构造代码,简单地说,我会让按钮启动计时器,然后TimeRecursed事件将控制图片框中椭圆的创建,每1秒一次

对于更多的解释,我认为最好是把一些代码放在一起,这样我们可以更好地理解您的意图。那么我们也许可以提供更多的帮助。希望这能有所帮助

[edit1]

这将创建省略号,直到计时器停止,您可以添加一个按钮来停止计时器1:

public void Button1_Click(Object sender, EventArgs e)
{
    timer1.Interval = 1000;
    timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
    DrawMap ortamcizdir = new DrawMap(p_box_map, bmp, ZoomControl, panel1);
    DrawCell hucrecizdir = new DrawCell (p_box_map, bmp, a, ZoomControl, ZoomKontrolBolen);
}
不要忘记,您需要将计时器拖到设计上,然后双击属性窗格上的勾选事件

这个答案认为DrawCell类没有问题

[edit2]

我在考虑我发布的内容,这将创建椭圆,直到计时器停止。因此,您可能需要添加
while
语句来控制要绘制的椭圆数。查看其他实现方法

这样可以设置要绘制的椭圆数量,这是一个示例,但有很多方法可以实现

//create this field and property before the constructor
public int counter;
public int Counter
{
    get { return counter; }
    set { counter = value; }
}

//button click sets the interval to 1sec, starts timer and sets the int Counter to 0
private void button1_Click(object sender, EventArgs e)
{
    timer1.Interval = 1000;
    timer1.Start();
    Counter = 0;
}

//the tick event iterates the Counter property +1 everytime the timer advances 1sec and while Counter is under 5 for example it creates those objects
private void timer1_Tick(object sender, EventArgs e)
{
    Counter++;
    while (counter < 5)
    {
        DrawMap ortamcizdir = new DrawMap(p_box_map, bmp, ZoomControl, panel1);
        DrawCell hucrecizdir = new DrawCell (p_box_map, bmp, a, ZoomControl, ZoomKontrolBolen);
    }
}
//在构造函数之前创建此字段和属性
公共int计数器;
公共整数计数器
{
获取{返回计数器;}
设置{counter=value;}
}
//单击按钮将间隔设置为1秒,启动计时器并将整数计数器设置为0
私有无效按钮1\u单击(对象发送者,事件参数e)
{
计时器1。间隔=1000;
timer1.Start();
计数器=0;
}
//每次计时器前进1秒时,勾号事件都会迭代计数器属性+1,例如,当计数器低于5时,它会创建