【问题标题】:How to display sharp icons in wxWIdgets如何在 wxWIdgets 中显示清晰的图标
【发布时间】:2018-05-04 07:37:15
【问题描述】:

我正在使用wxWidgets 为我的应用显示icon。我正在使用以下代码并使用带有128*128 尺寸的.ico file。但显示的图标不清晰。我应该如何使它锋利? 我正在使用以下代码:

bool ImageFileToIcon(wxString &path, wxIcon &icon)
{
  wxImage image;
  if (!image.LoadFile(path))
  {
     wxLogError(wxT("Couldn't load image from '%s'."), path.c_str());
     return false;
  }
  icon.CopyFromBitmap(image);
  return true;
}

someFunction()
{
  wxIcon tempIcon;
  ImageFileToIcon(IconImagePath, tempIcon);
  SetIcon(tempIcon);
}

我应该怎么做,我应该使用较小尺寸的 .ico 文件还是需要更改代码?有没有像 .ico 文件这样包含所有尺寸的文件,我们必须根据屏幕分辨率对其进行调整。如何在 wxWidgets 中做到这一点?

【问题讨论】:

  • 我正在加载图标运行时。

标签: c++ icons wxwidgets ico


【解决方案1】:

Windows 下的wxIcon 比较特殊,因为它可以包含同一张图片在不同分辨率下的多个表示,而wxImage 只包含一个图像。因此,当您将 .ico 文件加载到 wxImage 中时,除了一个图标之外,您将丢失所有图标。

相反,您应该改用专门的wxIconBundle 类。它也会让你的代码更简单,基本上你就可以了

SetIcons(wxIconBundle(IconImagePath));

【讨论】:

    【解决方案2】:

    VZ 的回答。已过时,因为 API 在版本 3.1.3 中更改。 现在你会做一个像这样的图像图标:

    wxInitAllImageHandlers(); // Init Image Handlers first
    SetIcons(wxIconBundle("your/path/to/your/logo/or/image")); // watch out for the s in the function call SetIcons(), not SetIcon() anymore
    

    【讨论】:

    • 你说得对,谢谢,我会相应地更新我的答案。
    猜你喜欢
    • 2016-08-26
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2011-03-01
    相关资源
    最近更新 更多