在图像应用程序中,为了增强标记的对比度,我想使用一种填充颜色,该颜色与本地背景具有高对比度(例如反转)。这需要对象读取其QGraphicsScene中的背景。
是否有一种有效(内置)的方法来实现这一点,或者需要像渲染没有标记的场景,读取其位置处的像素,然后相应地绘制标记?
在图像应用程序中,为了增强标记的对比度,我想使用一种填充颜色,该颜色与本地背景具有高对比度(例如反转)。这需要对象读取其QGraphicsScene中的背景。
是否有一种有效(内置)的方法来实现这一点,或者需要像渲染没有标记的场景,读取其位置处的像素,然后相应地绘制标记?
在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));