gpt4 book ai didi

c++ - 使用 QPainter 绘制可缩放的 QIcon

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:19 27 4
gpt4 key购买 nike

我想设计一个新的 QIcon 并希望它看起来像一个固定的文本,周围有一个圆角矩形

.-----.
| Phy |
`-----´

当在最终应用了缩放变换的 QPainter 上绘制时,图标应该在没有“像素 block ”效果的情况下缩放(例如,当我绘制到一个小部件中时,该小部件是 QGraphicsView 的一部分,并在其上应用了缩放场景)。

因此,我很难知道应该如何绘制我的 QIcon。如果我按照下面的方式来做,我将绘制一个始终具有固定数量像素的 QPixmap,从而在比例足够大时不可避免地引入像素 block 效应

 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 with drawText 的工作方式。无论我的规模有多大,当我绘制字体时,它总是看起来很清晰,而且我无法检测到单个像素。

我想象我可以告诉 QPainter 将我的图标绘制到给定的像素矩形中,然后 QPainter 变换矩形自身,然后再让我的QIconEngine::paint 将项目渲染成可能更大的矩形或像素图。但我看不出我怎么能做这样的事情。

我是不是太蠢了,没有看到明显的解决方案?

最佳答案

我确实被彻底抛弃了。我可以只使用 QIcon::paint 并将矩形传递给它。它会正确地将请求委托(delegate)给图标引擎。

关于c++ - 使用 QPainter 绘制可缩放的 QIcon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12460737/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com