如何在C#中从绘制的面板中获取位图

3

我有一个面板并使用它的Graphics gr = panel1.CreateGraphics() 来绘制线条和其他东西。我需要获取鼠标点击位置的像素颜色,所以我决定使用Bitmap的GetPixel方法。我通过以下方式创建位图:

Bitmap b = new Bitmap(width, height);            
panel1.DrawToBitmap(b, new Rectangle(0, 0, width, height));
b.Save("D:/aaa.bmp");

即使我画了任何东西,但我只能得到一个白色矩形。问题出在哪里?


可能是https://dev59.com/NkrSa4cB1Zd3GeqPX59J的重复问题。 - M.Babcock
1
最小化窗体并将其恢复以查看为什么不应使用CreateGraphics()。 - Hans Passant
1个回答

2

只有在Paint事件中绘制的内容才会被DrawToBitmap渲染。不要显式调用panel1.CreateGraphics(),而是处理面板的Paint事件,并使用e.Graphics进行绘制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接