[visual-studio]panel1。DrawToBitmap 不会从 DrawLine 绘制线条

标签: Visual-Studio
发布时间: 2014/3/1 3:52:01
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个面板,我画的线条:

Point PreviousPoint = new Point (0,0);
Point NewPoint = new Point (10,10);
Pen MyPen = new Pen(Color.Black, 2);
Graphics MyGraphics = panel1.CreateGraphics();
MyGraphics.DrawLine(MyPen, PreviousPoint, NewPoint);

这一切工作正常。我很明显改变的点绘制多个线条,不过也没关系对这一问题。我想要一个 jpg 文件作为导出该面板。我使用这段代码:

Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
panel1.DrawToBitmap(bmp, new Rectangle(0, 0, panel1.Width, panel1.Height));
bmp.Save("C:\\panel.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

这将输出空白 jpg。我的面板的背景为灰色,和 jpg 的背景是相同的灰色,所以我知道它其实导出小组。此外,我添加了按钮到面板只是为了看看是否它会得到保存,并且它做了。所以出于某种原因 jpg 不拯救正在绘制的线条。

解决方法 1:

所以我做了一种解决的方法,以解决的核心问题。我做的我绘制绘制线条的点数组,然后我这么做是:

        // make sure you actually drew something
        if (MyLines.Length > 0)
        {
            // instantiate the stuff you need
            Image img = new Bitmap(panel1.Width, panel1.Height);
            Graphics g = Graphics.FromImage(img);
            Pen pen = new Pen(Color.Black, 2);

            // draw every line (from every even index to the one after it)
            for (int i = 0; i < MyLines.Length; i++)
            {
                if (i % 2 == 0)
                {
                    g.DrawLine(pen, MyLines[i], MyLines[i + 1]);
                }
            }
            img.Save("C:\\panel.png", System.Drawing.Imaging.ImageFormat.Png);
        }
    }
官方微信
官方QQ群
31647020