【问题标题】:How to pass 2x-resolution image to wxBitmapButton in OS X?如何在 OS X 中将 2x 分辨率图像传递给 wxBitmapButton?
【发布时间】:2021-02-02 21:17:10
【问题描述】:

我的应用程序有一个通常为 64 像素高度的工具栏。在 OS X(带有 Retina 显示器)上,工具栏的高度仍然等于 64(逻辑)像素。

如果我在创建 wxBitmapButton 时传递 64x64 位图,我会得到一个模糊的图像(这是预期的),所以我需要以某种方式传递一个 128x128 位图。

当我通过它时,它只是在没有适当缩放的情况下被裁剪。那么如何使用 wxBitmapButton 来展示高质量的位图呢?

【问题讨论】:

  • 你的 wx 版本是多少?您的应用程序在 info.plist 中有必要的设置吗?
  • 我在 Info.plist 中有以下高 DPI 相关值:NSHighResolutionCapableNSPrincipalClasswxNSApplication in Info.plist 和 wxWidgets 版本是 v3.1.4。
  • @ababo,我也遇到了同样的问题,你找到解决办法了吗?
  • 还没有,暂时切换到其他问题。

标签: wxwidgets


【解决方案1】:

我知道现在这是一个相当老的问题,但如果你使用来自 Git 或 3.1.6+ 的最新版本的 wxWidgets,那么现在终于有了一个很好的答案。

答案在于使用wxBitmapBundle,它基本上是一个智能容器,用于在不同分辨率/不同 DPI 比例因子下使用位图。在最简单的情况下,这在 Mac 下就足够了,您只需要从两个位图创建一个包,使用 wxBitmapBundle::FromBitmaps(bmpNormal, bmpHigh) 在正常(或 100%)和高(或 200%)DPI 下使用并传递此对象到wxBitmapButton::SetBitmap()

这也适用于wxToolBar 工具、wxStaticBitmap 和其他(尽管不是全部)类。并且可以从资源中创建位图包,这在 Mac 下特别方便,因为您的应用程序包中可以只包含 normal.pngnormal@2x.png 文件(这与 wxBitmapBundle 无关,它只是一个不幸的重载术语)Resources 子目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    相关资源
    最近更新 更多