【发布时间】:2014-03-12 21:54:52
【问题描述】:
我有 Paintable 类,它能够使用作为参数提供的 QPainter 来绘制自己:
class Paintable
{
public:
virtual void paint(QPainter*) = 0;
};
这个类的实例被绘制在一个 QImage 上:
QImage paint(const std::vector<Paintable*>& paintables) {
QImage result;
QPainter p(&result);
for(int i = 0; i < paintables.size(); ++i) {
paintables[i]->paint(&p);
}
return result;
}
我想要实现的是函数paint也可以形成一个大小等于result图像大小的矩阵,其中每个单元格都包含一个指向Paintable的指针,它在result图像中绘制了相应的像素( z-buffer 之类的东西)。
如果QPainter 的绘制方法以某种方式让我知道QPaintDevice 的哪些像素在上次绘制操作期间被更改,则可以轻松实现。关于如何做的任何想法?我应该创建从QPaintDevice 或QPaintEngine 派生的类吗?
我使用的是 Qt 4.6.4。
谢谢。
【问题讨论】: