2013-10-23 15 views
8

this postで、CodeNakedはアプリケーションのTextFormattingModePropertyの変更方法について説明します。これは、私の問題(下記参照)を.Net 4で完全に解決します。しかし、私の制作アプリケーションは、そのプロパティをまったく持っていない.Net 3.5にあります。どのように.NET 3.5で同じことを達成するのですか?混合WinFormsおよびWPFアプリケーションの.Net 3.5におけるDPIスケーリング

私の根本的な問題:

私は特定の画面上のいくつかのWPFコントロールを持っている.NET 3.5に基づいて、WinFormsのアプリケーションを持っています。 Windows DPIの設定が150%(120%ではなく)に設定されている場合、スケーリングは期待通りに行われます。ただし、WPFコントロールが作成されるとすぐに、スケーリングはすべてのウィンドウで100%に戻されます。スケーリングは変わらないようにしたいと思います。

デモを作成するためにtest applicationを作成しました。デフォルトでは、wpfコントロールで別のwinformを開くボタンを持つwinformが開きます。変更しないままにして、2番目のフォームを開くと、スケーリングが100%に戻ります。ただし、Form1.vbの行11のコメントが解除されると、2番目のフォームが開かれたときにスケーリングが正しく発生し続けます。

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

クラスのApp:あなたが直接あなたのアプリケーションを定義する必要が

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 
+0

ですが、この問題の回答が受け入れられていません。 –

答えて

4

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

DPIが認識している私は、あなたのプロジェクトにapp.manifestファイルを作成し、

を追加しました
<asmv3:application> 
     <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> 
      <dpiAware>true</dpiAware> 
     </asmv3:windowsSettings> 
    </asmv3:application> 

ここで、asmv3は

関連する問題