Qt C ++ QGraphicsItem的paint()方法可以访问底层像素吗?

时间:2014-05-05 08:21:09

标签: c++ graphics qt4 qgraphicsitem

对于图像顶部的成像应用中的视觉标记,我希望通过使用与局部背景具有高对比度的填充颜色(例如,倒置)来增强所述标记的对比度。这要求对象在QGraphicsScene中读取其背景。

是否有一种有效的(内置)方式可以做到这一点,还是需要在没有标记的情况下渲染场景,读取其位置的像素,然后相应地绘制()标记?

1 个答案:

答案 0 :(得分:0)

没有直接的方法可以获得QGraphicsScene中某些点的渲染颜色。您应该实际渲染场景并查看颜色。一种解决方法是将场景渲染到QImage并从所需像素中选择颜色:

QImage image=QImage(width,height,QImage::Format_RGB32);
QPainter painter( &image );
painter.setRenderHint(QPainter::Antialiasing);
myScene->render( &painter, image.rect(),QRectF(0,0,width,height), Qt::KeepAspectRatio );
painter.end();

QColor color = QColor(image.pixel(x,y));