Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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#处理绘制的多边形_C#_Drawing_Editing_Polygons - Fatal编程技术网

C#处理绘制的多边形

C#处理绘制的多边形,c#,drawing,editing,polygons,C#,Drawing,Editing,Polygons,我有两个关于多边形的问题 我正在画多边形到picturebox。这个图片盒有滑杆。如果使用滑块向上或向下移动,则当前不可见的多边形将被删除。我和C#一起工作才两个月,所以我还是新手。如何解决这个问题 是否可以单击多边形并用鼠标移动或更改其大小 致意 for (int i = 0; i < final_rng.Count; i++) { listPoint.Clear(); for (int j = 0; j < final_rng[i].body.Count; j

我有两个关于多边形的问题

  • 我正在画多边形到picturebox。这个图片盒有滑杆。如果使用滑块向上或向下移动,则当前不可见的多边形将被删除。我和C#一起工作才两个月,所以我还是新手。如何解决这个问题

  • 是否可以单击多边形并用鼠标移动或更改其大小

  • 致意

    for (int i = 0; i < final_rng.Count; i++) 
    {
        listPoint.Clear(); 
        for (int j = 0; j < final_rng[i].body.Count; j++)
        { 
           listPoint.Add(new Point(final_rng[i].body[j].X, final_rng[i].body[j].Y)); 
         }
    //for (int j = 0; j < final_rng[i].body.Count; j++)
        grafika.FillPolygon(Brushes.Turquoise, listPoint.ToArray()); }
    //for (int i = 0; i < final_rng.Count; i++)
    
    for(int i=0;i
    如果直接在
    PictureBox
    上绘制,则重新绘制控件时(例如,调整窗口大小时),绘制的多边形将丢失。更好的方法是绘制
    位图
    ,然后添加并在
    图片框中显示它。例如:

    // A new bitmap with the same size as the PictureBox
    var bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
    
    //Get the graphics objectm which we can use to draw
    var graphics = Graphics.FromImage(bitmap);
    
    //Draw stuff
    graphics.FillRectangle(Brushes.Red, new Rectangle(0, 0, 500, 500));
    
    //Show the bitmap with graphics image in the PictureBox
    pictureBox1.Image = bitmap;
    

    这取决于您如何存储绘图原语,如果您只是将它们绘制到屏幕上,那么一旦它们超出边界,您就会丢失它们,因此我有以下代码
    for(int i=0;i
    grafika.FillPolygon(brush.Turquoise,listPoint.ToArray());//for(int i=0;i