wxBitmap не центрируется в wxButton на Mac - PullRequest
0 голосов
/ 10 апреля 2020

я создаю рабочий стол GUI с использованием wxWidgets-3.1.3 на 3 платформах: Windows, Ma c и Linux.

Домашняя страница в виде приложения, которая просто показывает 3 плитки кнопки. Каждая кнопка имеет описание статического текста ниже и растровое изображение в кнопке.

Однако, когда я использую Windows и Linux, растровые изображения могут отображаться в середине кнопки. Когда я пытался построить с использованием XCode на ma c, положение растровых изображений искажалось, как показано. Я знаю, что причина root заключается в том, что по умолчанию для направления растрового изображения установлено значение wxLEFT.

Я пытался:

добавить стиль wxBU_NOTEXT для каждой кнопки, но он не работает.

Мне нужен этот интерфейс к следующей неделе. Так что любая помощь будет высоко ценится!

wxImage::AddHandler(new wxPNGHandler);
    wxBitmap DataValidationIcon = wxBITMAP_PNG_FROM_DATA(Data_Validation);
    wxBitmap ActiveIdleIcon = wxBITMAP_PNG_FROM_DATA(Active_Idle);
    wxBitmap SDKDemoIcon = wxBITMAP_PNG_FROM_DATA(SDK_Demo);

    DataValidationBtn->SetBitmap(DataValidationIcon);
    ActiveIdleBtn->SetBitmap(ActiveIdleIcon);
    SDKDemoBtn->SetBitmap(SDKDemoIcon);

MacOS distorted the positioning of bitmap

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Мне удалось решить эту проблему с помощью SetMinSize () специально для MacOS. По-видимому, для Ma c существуют строгие рекомендации по пользовательскому интерфейсу. Растровые изображения будут автоматически соответствовать размеру кнопки, если вы установите размер кнопки по умолчанию. Если вы установите минимальный размер кнопки больше, чем растровое изображение, макет будет искажен.

0 голосов
/ 11 апреля 2020

Вы не показываете код, создающий SDKDemoBtn, поэтому я не уверен, как вы его создаете и используете ли вы какие-либо стили выравнивания. Но в любом / наихудшем случае вы всегда можете динамически генерировать растровое изображение размера вашей кнопки, содержащее реальное растровое изображение, центрированное внутри него, используя wxImage::Paste().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...