| PowerTools SPREAD for Windows Forms 10.0J > 開発者ガイド > 製品の使用方法 > 高DPIのサポート | 
SPREADでは、高DPIのサポートが有効なアプリケーションにおいて、高DPI設定をサポートします。アプリケーションのDPIのサポートを有効にする方法については、Microsoft社のWebサイトを参照してください。
以下、.NET Framework 4.5.2にて、DPIのサポートを有効にする手順を説明します。
| app.manifest | 
                                コードのコピー
                             | 
|---|---|
| <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" > <asmv3:application> <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings"> <dpiAware>true</dpiAware> </asmv3:windowsSettings> </asmv3:application> </assembly> | |
| C# | 
                                コードのコピー
                             | 
|---|---|
| static class Program { /// <summary> /// アプリケーションの主要なエントリポイントです。 /// </summary> [STAThread] static void Main() { SetProcessDPIAware(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } [System.Runtime.InteropServices.DllImport("user32.dll")] public extern static IntPtr SetProcessDPIAware(); } | |
| Visual Basic | 
                                コードのコピー
                             | 
|---|---|
| NotInheritable Class Program Private Sub New() End Sub ''' <summary> ''' アプリケーションのメイン エントリ ポイントです。 ''' </summary> <STAThread> _ Friend Shared Sub Main() SetProcessDPIAware() Application.EnableVisualStyles() Application.SetCompatibleTextRenderingDefault(False) Application.Run(New MainForm()) End Sub <System.Runtime.InteropServices.DllImport("user32.dll")> _ Friend Shared Function SetProcessDPIAware() As Boolean End Function End Class | |
|  | どのウィンドウを作成する場合でも、事前にSetProcessDPIAware APIを呼び出す必要があります。これをせず、このAPIを使用する前に作成されたウィンドウでは、不適切なサイズやフォントが使用されます。 | 
| App.config | 
                                コードのコピー
                             | 
|---|---|
| <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" /> </appSettings> </configuration> | |
OSのDPI設定を変更した場合、コントロールのサイズはDPIの設定に応じて拡大されますが、SPREADの行の高さや列幅は変更されません。SPREADのスケーリングを有効にすると、DPIに応じて行の高さや列幅が変更されるようにできます。SPREADのスケーリングを有効にするには、FpSpreadクラスのSpreadScaleModeプロパティを使用します。
|  | 
 | 
SpreadScaleModeプロパティは、次のように設定します。
データ連結している場合、DataAutoSizeColumnsプロパティの設定が列幅に影響を及ぼす可能性があります。以下、SpreadScaleModeプロパティとの関係で、DPIの設定に応じてサイズが変更される要素を表しています。
| SpreadScaleModeプロパティ | |||
| ZoomDpiSupport | None(デフォルト) | ||
| DataAutoSizeColumns プロパティ | True | 列幅および行高さ | 列幅のみ | 
| False | 列幅および行高さ | なし | |
※コントロールのサイズは設定値に関わらず拡大されます。
SPREADのスケーリングは、.NET Frameworkの自動スケーリング上で動作します。そのため、.NET Frameworkの自動スケーリングの動作を理解しておく必要があります。詳細は、次の情報を参照してください。
自動スケーリングは、フォームのロード時にのみ行われます。実行時では、コントロールのサイズや位置が変更された時点、およびコンテナのレイアウトが一時停止された時点で、スケーリングが変更される可能性があります。
次のサンプルコードは、SpreadScaleMode プロパティを ZoomDpiSupport に設定して、レイアウトを一時停止してから再開します。
| C# | 
                        コードのコピー
                     | 
|---|---|
| fpSpread.SuspendLayout(); AutoScaleDimensions = new System.Drawing.SizeF(96.0F, 96.0F); | |
| Visual Basic | 
                        コードのコピー
                     | 
|---|---|
| FpSpread1.SuspendLayout() AutoScaleDimensions = New System.Drawing.SizeF(96.0F, 96.0F) | |