问候所有人,
请参考图片: http://i48.tinypic.com/316qb78.jpg
我们正在开发一种应用程序,用于从电子显微镜中提取MRC图像的细胞边缘。
MRC文件格式存储体积像素数据(http://en.wikipedia.org/wiki/Voxel),我们只需使用3D字符数组(char ***)从MRC文件加载和存储数据(灰度值)。
如图所示,有3个观看者分别显示XY,YZ和ZX平面。 观察者顶部的滚动条用于沿轴更改图像切片。
以下是用户更改滚动条位置时的步骤。
1)获取新的滚动条值。(这个 是选定的切片)
2)对于相对平面(YZ,XY或 ZX),生成(char * slice;)数组 通过读取3D char来选择切片 array(char ***)
3)创建一个新的QImage * (Format_RGB888)并设置像素值 通过阅读'切片'(使用 img-> setPixel(X,Y,C))
4)这个新的QImage *画在了 paintEvent()方法。
我们将在一个单独的线程中执行“边缘检测”过程,因为它是一个密集的过程。在这个过程中我们需要在上面的QImage *上绘制检测到的曲线(像素集)。(作为一个层这意味着我们需要在QT线程之外调用drawPoint()方法。
这种情况下使用QImage的最佳方法是什么?
从另一个线程执行QT绘图方法的最佳方法是什么?
提前感谢,
答案 0 :(得分:4)
来自QImage
的文档:
由于
QImage
是QPaintDevice
子类,QPainter
可用于直接绘制到图像上。在QPainter
上使用QImage
时,可以在当前GUI线程之外的其他线程中执行绘制。
只需在图片上创建QPainter
并绘制所需内容即可。