c++ - svg 图标在高 DPI 上出现像素化

标签 c++ qt icons

我的一些 SVG 图标在缩放显示器 (Win10) 或使用高 DPI 显示器(Win10、Linux、Mac)时无法正确缩放。这适用于分配给 QAction 并由 QMenu 条目或 QToolButtons 显示的图标,以及分配给 QDockWidgets 的图标,如所附屏幕截图的上半部分所示。

下部的图标在派生的paintEvent(..)中绘制并完美呈现。

Pixelated action icons

使用选项 QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); 系统会在像素图上使用一些缩放启发式算法,因此图标会变得有些前卫:

Edgy action icons

有没有办法让qt在SVG基础上重绘图标而不需要派生所有图标显示类?

真诚的 杰杰

最佳答案

我对 SVG 图标也有这个问题。对我来说,这是由 SVG 文件和我试图将其渲染成的宽高比差异引起的。我尝试渲染为正方形,但我的 SVG 文件不是正方形。在 SVG 文件中设置方形尺寸修复了它。

关于c++ - svg 图标在高 DPI 上出现像素化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54572208/

相关文章:

android - 如何根据 VectorDrawables 中的 Material 设计指南为应用程序图标创建渐变长阴影?

c++ - 每次使用循环插入项目时,std::vector 如何重新分配?

安卓工作室 : Give each variant its own icon

c++ - 如何使用 C++ 在 openCV 中显示图像元数据?

c++ - 使用 Qt 创建 GUI

qt - 网络过载时 QTcpSocket 的行为是什么?

c++ - QVariant可以与QMatrix4x4和QVector3D等一起使用吗

vb.net - 如何更改任务栏中的程序图标 (VB.NET)

c++ - 从析构函数调用虚函数

c++ - 如何重复使用QImage?