对于图像上方的成像应用中的视觉标记,我想通过使用与局部背景具有高对比度(例如倒置)的填充色来增强所述标记的对比度。这要求对象在QGraphicsScene中读取其背景。
是否有一种有效的(内置)方法,还是需要在没有标记的情况下渲染场景,读取其位置的像素然后相应地paint()标记等操作?
最佳答案
没有直接的方法来获取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));
关于c++ - Qt C++ QGraphicsItem的paint()方法可以访问基础像素吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23467937/