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

3

在图像应用程序中,为了增强标记的对比度,我想使用一种填充颜色,该颜色与本地背景具有高对比度(例如反转)。这需要对象读取其QGraphicsScene中的背景。

是否有一种有效(内置)的方法来实现这一点,或者需要像渲染没有标记的场景,读取其位置处的像素,然后相应地绘制标记?


可能是重复的问题:有没有办法在Qt 5中访问QWidget背景存储器上的图像?底层像素不特定于图形视图框架,它们只是小部件背景存储器的像素。 - Kuba hasn't forgotten Monica
1个回答

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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接