图像框图形错误



我正在尝试将多边形列表绘制到图像框中。 到目前为止,我只在屏幕的左上角看到一条对角黑线。要点如下:

20

,200,2020,040,40

200,1000,2020,020,20

票价:100、200 元0, 200200,0票价:250、450 元

150,1301,2020,010,20

    private void pictureBox1_Paint_1(object sender, PaintEventArgs e)
    {
        int jobIndex = 0;
        int trussIndex = 0;
        Graphics g = e.Graphics;
        foreach (Member m in jobArray[jobIndex].trusses[trussIndex].members)
        {
            Point[] pointArray = new Point[m.poly.Points.Count()];
            //m.poly.Points.CopyTo(pointArray, 0);
            int index =0;
            foreach(System.Windows.Point p in m.poly.Points)
            {
                pointArray[index].X = (int)p.X;
                pointArray[index].Y = (int)p.Y;
                index++;
            }
            Pen myPen = new Pen(Color.Black);
            SolidBrush myBrush = new SolidBrush(m.color);
            g.DrawPolygon(myPen, pointArray);
            g.FillPolygon(myBrush, pointArray);
        }
    }

关于为什么多边形没有出现在图像框中的任何想法?颜色不是问题,也不是盒子的大小

看起来使用 Paint 事件调用此方法,请确保在调用此方法时具有可用的数据。绘制事件不会经常调用,因此如果添加要绘制的数据,则需要调用 pictureBox1.Invalidate() 方法来强制绘制事件。

我相信你迟早会看到这一点,但你应该创建一个图像(位图)对象并将其分配给 PictureBox 的 Image 属性。然后使用 Graphics.FromImage(_image) 获取图形对象。如果你不这样做,那么你的图像就不会停留,如果窗口被覆盖然后回到焦点,或者你把它拖出屏幕然后回来有点东西。

private Bitmap _bitMap;
private Graphics _graphic;
Pen myPen;
public Constructor()
{
    _bitMap = new Bitmap(pictureBox1.Width,pictureBox1.Height);
    _graphic = Graphics.FromImage(_bitMap);
    pictureBox1.Image = _bitMap;
    myPen = new Pen(Color.Black);
}
private void DataAdded()
{
    int jobIndex = 0;
    int trussIndex = 0;
    foreach (Member m in jobArray[jobIndex].trusses[trussIndex].members)
    {
        //Pen myPen = new Pen(Color.Black); //Don't instantiate in a loop
        SolidBrush myBrush = new SolidBrush(m.color);
        _graphic.DrawPolygon(myPen, m.poly.Points.ToArray());
        _graphic.FillPolygon(myBrush, m.poly.Points.ToArray());
    }
    pictureBox1.Image = _bitMap; //Don't think you need this, but I don't remember
}

希望这有帮助

最新更新