#wxwidgets
#wxwidgets
Вопрос:
В моем приложении есть панель инструментов, высота которой обычно составляет 64 пикселя. В OS X (с дисплеем retina) высота панели инструментов по-прежнему равна 64 (логическим) пикселям.
Если я передаю растровое изображение размером 64×64 при создании wxBitmapButton, я получаю размытое изображение (что и ожидалось), поэтому мне нужно каким-то образом передать растровое изображение размером 128×128.
Когда я передаю его, оно просто отображается обрезанным без надлежащего масштабирования. Итак, как я могу использовать wxBitmapButton для отображения высококачественного растрового изображения?
Комментарии:
1. какая у вас версия wx? есть ли у вашего приложения необходимые настройки в info.plist?
2. В Info.plist у меня есть следующие значения, связанные с высоким разрешением DPI: <key>NSHighResolutionCapable</key><true/><key>NSPrincipalClass</key><string>wxNSApplication</string> в Info.plist, а версия wxWidgets — v3.1.4.
3. @ababo, я сталкиваюсь с точно такой же проблемой, вы нашли решение?
4. Пока нет, просто переключился на другие проблемы.
Ответ №1:
Я знаю, что на данный момент это довольно старый вопрос, но теперь, наконец, есть хороший ответ на него, если вы используете последние версии wxWidgets из Git или 3.1.6 после его выпуска.
Ответ заключается в использовании wxBitmapBundle, который по сути является интеллектуальным контейнером для растровых изображений, которые будут использоваться в разных разрешениях / с разными масштабными коэффициентами DPI. В простейшем случае, которого достаточно для Mac, вам просто нужно создать пакет из двух растровых изображений, который будет использоваться при нормальном (или 100%) и высоком (или 200%) DPI с помощью wxBitmapBundle::FromBitmaps(bmpNormal, bmpHigh)
и передать этот объект wxBitmapButton::SetBitmap()
.
Это также работает с wxToolBar
инструментами wxStaticBitmap
и другими (хотя и не всеми) классами. И пакет bitmap может быть создан из ресурсов, что особенно удобно под Mac, поскольку вы можете просто иметь normal.png
normal@2x.png
файлы and в вашем пакете приложений (что не имеет ничего общего с wxBitmapBundle
, это просто, к сожалению, перегруженный термин) Resources
подкаталог.