2016-06-26 5 views
1

Я пишу приложение wxWidgets (3.1.0), которое должно работать на windows и mac. В окнах, когда я устанавливал масштабирование текста более чем на 100%, размеры моих элементов управления все испортились. У меня есть манифест с разрешением dpi, который говорит, что мое приложение поддерживает dpi. Я также устанавливаю размер пикселя шрифта в своих диалогах, и это работает в некоторой степени. Когда я устанавливаю размер какого-либо элемента из кода, он изменяется на тот размер пикселя, который мне нужен, но размер, заданный в файле xrc, увеличивается. Кроме того, когда я пытаюсь уменьшить размер любого wxSpinCtrl, его можно уменьшить до некоторой степени, но тогда только текстовое поле становится меньше, а кнопки остаются непропорционально большими. Итак, есть ли способ сообщить моему приложению, чтобы он не масштабировал любые размеры, и просто пусть все будет точно таким же размером пикселей, как и на обычном dpi (несмотря на то, что мое приложение будет выглядеть маленьким при более высоких разрешениях)?Запретить приложение wxWidgets с масштабированием размеров при более высоких томах

+0

Вы пытались удалить уведомление о различиях из файла манифеста? – Igor

+0

@Igor Если я удаляю манифест, тогда окна используют его масштаб по умолчанию, который делает все выглядящим размытым. – Milan

+0

Это очень странный вопрос, почему именно вы сознательно хотите, чтобы ваша программа выглядела * плохой * на экранах с высоким разрешением? Реальное решение - решить проблему, какова бы она ни была. К сожалению, «все испорченные» недостаточно точны, чтобы понять, что это точно. –

ответ

0

Невозможно предотвратить использование правильного масштабирования с помощью API wxWidgets, и я не думаю, что это изменится, потому что это просто не имеет никакого смысла.

Однако перестройка wxWidgets с помощью wxHAVE_DPI_INDEPENDENT_PIXELS должна обмануть библиотеку, считая, что базовый графический инструментарий уже масштабирует значения пикселей и поэтому не позволяет делать это самостоятельно. Я никогда не тестировал это, но, AFAICS, это должно привести к тому, что вы хотите.

Тем не менее, позвольте мне еще раз подтвердить, что то, что вы хотите, совершенно неверно, и реальное решение этой проблемы заключается в том, чтобы объяснить это тем, кто решил это сделать.

+0

Спасибо, что решило большинство моих проблем – Milan