gpt4 book ai didi

.net - 混合 WinForms 和 WPF 应用程序中 .Net 3.5 中的 DPI 缩放

转载 作者:行者123 更新时间:2023-12-02 13:01:38 25 4
gpt4 key购买 nike

this post ,CodeNaked 讨论了如何更改应用程序的 TextFormattingModeProperty。这在 .Net 4 中完美地解决了我的问题(见下文)。但是我的生产应用程序在 .Net 3.5 中,它根本没有该属性。如何在 .Net 3.5 中完成同样的事情?

我的根本问题:

我有一个基于 .Net 3.5 的 winforms 应用程序,它在某些屏幕上有一些 WPF 控件。当 Windows DPI 设置设为 150%(不是 120%)时,会按预期进行缩放。但是,一旦创建了 WPF 控件,所有窗口的缩放比例就会设置回 100%。我希望缩放比例保持不变。

我创建了一个test application展示。默认情况下,它会打开一个 winform,其中有一个按钮,该按钮将打开另一个带有 wpf 控件的 winform。保持不变,打开第二个表单将导致缩放恢复到 100%。但是,如果 Form1.vb 中的第 11 行未注释,则打开第二个窗体时,缩放将继续正确进行。

Dim newApp As New App() 'Uncomment to fix automatic scaling

类应用程序:

Imports System.Windows
Imports System.Windows.Media

Partial Public Class App
Inherits Application

Public Sub App()
TextOptions.TextFormattingModeProperty.OverrideMetadata(GetType(Window), New FrameworkPropertyMetadata(TextFormattingMode.Display, FrameworkPropertyMetadataOptions.AffectsMeasure Or FrameworkPropertyMetadataOptions.AffectsRender Or FrameworkPropertyMetadataOptions.Inherits))

End Sub
End Class

最佳答案

您必须直接定义您的应用支持 DPI

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633543(v=vs.85).aspx

我已经在您的项目中创建了 app.manifest 文件并添加了

  <asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>

asmv3 在哪里

xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"

关于.net - 混合 WinForms 和 WPF 应用程序中 .Net 3.5 中的 DPI 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19552299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com