gpt4 book ai didi

c# - 无法循环绘制到图片框

转载 作者:行者123 更新时间:2023-12-03 20:52:13 24 4
gpt4 key购买 nike

我有一个List<Point>其中 Point 包含 X 和 Y。

我想要的是循环一个这样的列表并画一条点对点的线,我这样做的方法是:

foreach (List<Point> wps in map.waypoints)
{
System.Drawing.Pen myPen;
myPen = new System.Drawing.Pen(System.Drawing.Color.Black);
System.Drawing.Graphics formGraphics = this.pictureBox1.CreateGraphics();

Point startPos = new Point(wps[0].X, wps[0].Y);

foreach (Point p in wps)
{
formGraphics.DrawLine(myPen, startPos.X, startPos.Y, p.X, p.Y);
startPos = p;
}

myPen.Dispose();
formGraphics.Dispose();
}

但是什么也没被绘制!我对 pictureBox 的 on_click 事件做了同样的事情,但如果循环某些点,我只使用鼠标 X 和 Y。我已经验证了它们不包含垃圾的点列表:D

最佳答案

在绘制事件中编写代码,以便它引用。 picturebox.Invalidate() 将调用 Paint() 。

     private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Pen pen = new Pen(Color.AliceBlue);
PointF p = new PointF();
e.Graphics.DrawLine(pen,p.X,p.Y);

}

它适合您的代码

      private void pictureBox1_Paint(object sender, PaintEventArgs e) 
{
System.Drawing.Pen myPen;
myPen = new System.Drawing.Pen(System.Drawing.Color.Black);
foreach (List<Point> wps in map.waypoints)
{
Point startPos = new Point(wps[0].X, wps[0].Y);
foreach (Point p in wps)
{
e.Graphics.DrawLine(myPen, startPos.X, startPos.Y, p.X, p.Y);
startPos = p;
}
}
}

如果你想在某个函数中画线,请说

       public void DoFunction()
{
.....
.....
pictureBox1.Invalidate() /* here automatic call to pictureBox1_Paint(object sender, PaintEventArgs e) */

. . . .

}

明白了吗?

关于c# - 无法循环绘制到图片框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4517089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com