Как отображать острые значки в wxWIdgets - PullRequest
0 голосов
/ 04 мая 2018

Я показываю icon для моего приложения, используя wxWidgets. Я использую следующий код и использую .ico file с 128*128 размерами. но значок отображается не острый. Как я должен сделать это острым? Я использую следующий код:

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?

1 Ответ

0 голосов
/ 04 мая 2018

wxIcon под Windows особенный, поскольку он может содержать несколько представлений одного и того же изображения в разных разрешениях, в то время как wxImage содержит только одно изображение. Поэтому, когда вы загружаете файл .ico в wxImage, вы теряете все значки, кроме одного.

Вместо этого следует использовать специализированный класс wxIconBundle . Это также сделает ваш код намного проще, в основном вы можете

SetIcon(wxIconBundle(IconImagePath));
...