Установить PerMonitorV2 DpiAwareness без файла манифеста?

Мое приложение Winforms выглядит очень размытым при выполнении без файла манифеста. С ним и добавленным кодом

<System.Windows.Forms.ApplicationConfigurationSection>
    <add key="DpiAwareness" value="PerMonitorV2" />
</System.Windows.Forms.ApplicationConfigurationSection>

размытость действительно исчезает, но для этого требуется, чтобы у пользователя был дополнительный файл .config, чтобы приложение выглядело четким при его запуске. Я попытался установить для переменной AutoScaleMode моей формы значения Font и Dpi, но ничего не изменилось. Я также нашел в Интернете функцию SetProcessDpiAwarenessContext, но я не уверен, что это то, что я ищу, и я не знаю, как реализовать ее в своем коде.

Можно ли убрать размытость из моего приложения вообще без файла манифеста?


person Ero    schedule 24.07.2020    source источник
comment
Отвечает ли это на ваш вопрос? Осведомленность о DPI - незнание в одном выпуске, с учетом системы в другом   -  person pinkfloydx33    schedule 25.07.2020
comment
Также это, stackoverflow.com/q/43537990/491907, хотя прочитайте ответ Джими на первую ссылку, которую я разместил. Значения, переданные функции, по-видимому, не являются истинным перечислением, а являются контекстуальными, что означает, что вы должны вызвать Get и использовать его результат для вызова Set (очевидно, перечисления, определенные в этой ссылке, не совсем корректны)   -  person pinkfloydx33    schedule 25.07.2020
comment
Я не уверен. Мне трудно понять, какая информация является релевантной в этой теме и что я могу с ней сделать.   -  person Ero    schedule 25.07.2020
comment
Следуйте нижней части ответа Джими. Вызовите GetProcessDpiAwarenessContext и используйте его результат, чтобы затем вызвать SetProcessDpiAwarenessContext в самом начале вашего приложения перед любой другой строкой кода. В сторону: это на самом деле отвечает на ваш вопрос, я не предполагал, что это может. Это готовый текст переполнения стека для маркировки дубликата.   -  person pinkfloydx33    schedule 25.07.2020
comment
Я должен упомянуть, что я очень новичок и очень не уверен, как реализовать это в своем коде; в какой файл он входит, какие именно строки мне нужно добавить. Я знаю, что просить, чтобы тебя кормили с ложечки, не одобряют, но мне нужно немного разъяснений и помощи.   -  person Ero    schedule 25.07.2020
comment
Затем перейдите по другой ссылке (хотя, скрестите пальцы, так как Джими говорит, что это не должно работать, но другие предположили, что это работает)   -  person pinkfloydx33    schedule 25.07.2020
comment
Хм, кажется, я не могу выполнить эти шаги. В моем проекте нет App.xaml, так как это не проект WPF, а проект Winforms.   -  person Ero    schedule 25.07.2020
comment
Я использовал решение Джими сейчас. Я вставил код в начало файла Program.cs. Однако сейчас я получаю несколько ошибок. Все они CS0246. Они возникают при использовании InPtr (это опечатка?) и при каждом использовании DPI_AWARENESS_CONTEXT в перечислении. В чем дело?   -  person Ero    schedule 25.07.2020
comment
Эй, я на самом деле ничего не знаю об этом. Я просто хотел проверить, не повторяется ли этот вопрос. Если вы прочитаете инструкции Джими, он заметит, что это не настоящее перечисление (и не может им быть) и что пример предназначен для того, чтобы показать, как оно было бы выглядеть, если бы оно было перечислением. Тем не менее, я думаю, вы можете адаптировать его, используя примеры во второй ссылке, которую я разместил.   -  person pinkfloydx33    schedule 25.07.2020