当设备像素比设置为 2 倍(以便在 4K 显示器上很好地显示)时,我正在尝试绘制高分辨率图像。如果我直接在画家上绘制像素图,效果很好:
int pixelRatio = 2;
QPixmap myImage = ...;
auto pxm = myImage.scaled(imgDiameter * pixelRatio, imgDiameter * pixelRatio, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
pxm.setDevicePixelRatio(pixelRatio);
painter->drawPixmap(QPoint(xPos, yPos), pxm);
但是,由于我需要在不规则形状上绘制图像,所以我使用画笔:
int pixelRatio = 2;
QPixmap myImage = ...;
auto oldBrush = painter->brush();
auto pxm = myImage.scaled(imgDiameter * pixelRatio, imgDiameter * pixelRatio, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
pxm.setDevicePixelRatio(pixelRatio);
QBrush brush(pxm);
painter->setPen(Qt::NoPen);
painter->setBrush(brush);
painter->setBrushOrigin(xPos, yPos);
painter->drawEllipse(xPos, yPos, imgDiameter, imgDiameter);
painter->setBrush(oldBrush);
当画笔被填充时,它似乎不符合像素图的 devicePixelRatio,所以形状内的像素图是两倍大。
我在做什么有问题吗?