我正在尝试绘制到 public static Bitmap
,它是我的 PictureBox
-Control
的图像。绘图在同一个线程中工作正常,但是当我启动第二个线程时没有任何反应,没有绘制任何内容。有谁知道解决方案?
绘制代码:
Graphics g = Graphics.FromImage(screen);
g.Clear(Color.Black);Brushes.White);
g.Dispose();
//编辑:
请原谅我。位图存储在另一个名为 Form1 的类中。线程类是 DrawHelper。为了访问位图,我用这个(从 Form1 调用)为 DrawHelper 提供了 Form1 的引用。
我希望这有帮助。我可以发布所有代码,但是会有很多不必要的代码。
最佳答案
您的位图绑定(bind)到窗体窗口消息循环。如果您尝试访问类似的内容,则必须使用 Invoke 或 BeginInvoke。
此处:http://msdn.microsoft.com/en-us/library/ms171728.aspx
编辑。阅读评论后,我可以告诉您,您有一个错误,位图只是没有得到您认为它得到的信息。与使用线程本身无关...
如果你真的需要解决它,你应该创建一个简单的原型(prototype),有 2 个线程,一个按钮和一个位图,然后尝试从线程 #2 中绘制任何东西,看看什么不起作用。如果连这都行不通 - 请在此处发布代码。 (请不要复制/粘贴整个应用程序 - 保持在一个点上)
另外你应该把 try/catch 放在 using 里面。位图的行为可能只是因为在使用中存在不可见的异常。
关于C# 从第二个线程绘制到位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11122588/