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) |