【发布时间】:2013-03-28 11:01:29
【问题描述】:
我在从 C# 中的另一个线程克隆部分位图(由矩形定义的区域)时遇到问题。
为了理解: 在我的应用程序(Windows 窗体)中,用户可以定义执行不同图像处理功能的多个区域(例如识别颜色或文本)。图像由图像采集卡 (30fps) 提供。由于某些算法(例如 OCR)需要很长时间,因此它们应该在后台工作人员或线程中计算。
我的问题: 当我在我的主线程中克隆我的位图时 ((Bitmap)pictureBox1.Image).Clone(rectangle,((Bitmap)pictureBox1.Image).PixelFormat);
应用程序执行此操作的速度非常快(对于 50x50 的矩形不到 1 毫秒)。
当我从另一个线程克隆它时,它需要更多时间(大约 20 毫秒以上)。
当我使用“.Clone()”(没有矩形)克隆整个图像时,调用该方法的线程没有区别。需要同样的时间。
有人知道为什么当从另一个线程作为拥有图像的线程调用该方法时,克隆图像的一部分确实需要更多时间吗?
提前谢谢你。
问候
【问题讨论】:
标签: c# multithreading image clone picturebox