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

Posted

技术标签:

【中文标题】svg 图标在高 DPI 上出现像素化【英文标题】:svg icons appears pixelated on high DPI 【发布时间】:2019-02-07 11:22:12 【问题描述】:

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

下半部分的图标在派生的paintEvent(..)中绘制,完美渲染。

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

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

真诚的 JJ

【问题讨论】:

【参考方案1】:

我也遇到了 SVG 图标的问题。对我来说,这是由 SVG 文件和我试图渲染的文件之间的纵横比差异引起的。我尝试渲染为正方形,但我的 SVG 文件不是正方形。在 SVG 文件中设置正方形尺寸修复了它。

【讨论】:

以上是关于svg 图标在高 DPI 上出现像素化的主要内容,如果未能解决你的问题,请参考以下文章

安卓系统,5.5寸手机屏幕最合适的DPI是多少?

如何让MFC程序在高DPI设置时禁用显示缩放

css 在高dpi媒体设备上使用更漂亮的字体平滑

css 在高dpi媒体设备上使用更漂亮的字体平滑

CefSharp应用——High DPI问题

SVG 图标动画留下一个像素间隙