我的主窗口具有以下绘图功能:
void MainWindow::paintEvent(QPaintEvent*)
{
QImage sign(50, 50, QImage::Format_ARGB32_Premultiplied);
QPainter p(&sign);
p.setRenderHint(QPainter::Antialiasing, true);
p.fillRect(sign.rect(), QColor(255, 255, 255, 0));
p.setBrush(Qt::blue);
p.setPen(Qt::NoPen);
p.drawEllipse(0, 0, sign.width(), sign.height());
p.end();
QPainter painter(this);
painter.drawImage(rect(), sign, sign.rect());
}
Run Code Online (Sandbox Code Playgroud)
所以基本上,它会在 QImage 上绘制一个蓝色填充圆圈,然后将该 QImage 绘制到小部件上。然而,当我调整窗口大小时,我得到了奇怪的人工制品(在左上角)。它看起来是这样的:
原来的:

更改窗口大小后:

有谁知道这是为什么?
(我正在 Ubuntu 10.04 下工作,如果你感兴趣的话)
我认为你的QImage初始化是垃圾。构建完成后,调用sign.fill(). 我尝试了你的代码,甚至在我的机器上调整大小之前,工件就已经存在了。
来自 Qt 文档:
QImage::QImage ( int 宽度, int 高度, Format 格式 )
构造具有给定宽度、高度和格式的图像。
警告:这将创建一个带有未初始化数据的 QImage。在使用 QPainter 在图像上绘图之前,调用 fill() 用适当的像素值填充图像。
| 归档时间: |
|
| 查看次数: |
2738 次 |
| 最近记录: |