我正在尝试基于QPixmaps创建流程管理器。这些像素图通过20Hz的定时器回调更新,所以看起来它们正在旋转。
以下是我当前窗口的屏幕截图。
Pixmap screenshot http://i47.tinypic.com/y5g4.png
像素图是具有[20] [14]个元素的2D数组。 20是时间片的数量,14是过程状态指示器。我知道,屏幕上只显示了13个。
我目前正在使用画家对象和合成模式将QImages与以下代码一起添加:
QImage textImage(mapIcon.size(), QImage::Format_ARGB32);
QImage resultImage(mapIcon.size(), QImage::Format_ARGB32);
QPainter textPainter(&textImage);
textPainter.setCompositionMode(QPainter::CompositionMode_Source);
textPainter.fillRect(mapIcon.rect(), Qt::black);
textPainter.setCompositionMode(QPainter::CompositionMode_SourceOver);
textPainter.setFont(QFont("Arial", 8, QFont::Bold));
textPainter.setPen(QPen(Qt::white));
textPainter.drawText(QRectF(0, 0, mapIcon.width(), mapIcon.height()),
Qt::AlignCenter, name);
textPainter.end();
QPainter resultPainter(&resultImage);
resultPainter.setCompositionMode(QPainter::CompositionMode_Source);
resultPainter.drawImage(0, 0, mapIcon);
resultPainter.setCompositionMode(QPainter::CompositionMode_Exclusion);
resultPainter.drawImage(0, 0, textImage);
resultPainter.setRenderHint(QPainter::SmoothPixmapTransform, true);
resultPainter.setRenderHint(QPainter::HighQualityAntialiasing, true);
runnerIcons[x][y] = QPixmap::fromImage(resultImage);
我的问题是这个:我不想在绿色标签上看到倒置的配色方案,我想要那种颜色为黑色。黑色的白色是好的,但洋红色不是我的最爱。
这可能在Qt?或者也许你会对替代解决方案提出一些建议吗?
提前致谢。
答案 0 :(得分:1)
你可以做几件事。您可以查看QPainter::setCompositionMode (mode)
方法。也许其他一种组合模式对你有用吗?特别是QPainter::CompositionMode_Exclusion
或QPainter::RasterOp_SourceXorDestination
。
您还可以为文字使用免费颜色。洋红色(蓝色+红色)与色轮上的绿色相反。如果你制作文字洋红色,它可能会很好地反对黑色和绿色。 (我不是说它会看起来很棒 - 只是它会很好地显示出来。)或者你可以将文本设为50%灰色,以便亮度和颜色都有对比度?
此外,您只有13个图标,而不是14个。不确定它是否有任何区别。