C++ 使用QPaint绘制可缩放的QIcon
我想设计一个新的QIcon,希望它看起来像一个固定的文本,周围有一个圆角矩形C++ 使用QPaint绘制可缩放的QIcon,c++,qt,icons,scalable,C++,Qt,Icons,Scalable,我想设计一个新的QIcon,希望它看起来像一个固定的文本,周围有一个圆角矩形 .-----. | Phy | `-----´ 当在最终应用了比例变换的QPaint上绘制时(例如,当我绘制到QGraphicsView的一部分并在其场景上应用了比例的小部件时),图标应该在没有“像素块”效果的情况下进行缩放 因此,我很难知道我应该如何画我的旗袍。如果我按照下面的方法来做,我将绘制一个QPixmap,它总是有固定数量的像素,因此当比例足够大时不可避免地引入像素块效果 void MyWidget::d
.-----.
| Phy |
`-----´
当在最终应用了比例变换的QPaint上绘制时(例如,当我绘制到QGraphicsView的一部分并在其场景上应用了比例的小部件时),图标应该在没有“像素块”效果的情况下进行缩放
因此,我很难知道我应该如何画我的旗袍。如果我按照下面的方法来做,我将绘制一个QPixmap,它总是有固定数量的像素,因此当比例足够大时不可避免地引入像素块效果
void MyWidget::drawIcon(QPainter *painter, QPoint pos) {
QPixmap pixmap = icon.pixmap(QSize(22, 22),
isEnabled() ? QIcon::Normal
: QIcon::Disabled,
isChecked() ? QIcon::On
: QIcon::Off);
painter->drawPixmap(pos, pixmap);
}
我要寻找的是一种类似QFont与drawText
的工作方式。无论我的比例有多大,当我绘制字体时,它总是看起来很锐利,我无法检测单个像素
我想象我可以告诉QPainter
将我的图标绘制成一个给定的像素矩形,然后QPainter
在让我的QIconEngine::paint
将项目渲染成一个可能更大的矩形或像素地图之前,对矩形本身进行变换。但我看不出我怎么能做这样的事
我是不是太傻了,没有看到明显的解决方案?我通过将图标/图像创建为SVG文件,并使用
qsvgrender
将它们绘制到QPainter
上来实现这一点。所需的类在中。我确实完全被转储了。我可以使用QIcon::paint
并将矩形传递给它。它将正确地将请求委托给图标引擎。要创建可缩放的图形吗?大概是这样,当它“重放”QPainter命令时,不确定它与QSvg
类相比的效率有多高。我刚刚找到了正确的解决方案:仅使用QIcon的绘画功能就足够了。