PowerTools SPREAD for Windows Forms 8.0J > 開発者ガイド > 製品の使用方法 > 高DPIのサポート |
SPREADでは、高DPIのサポートが有効なアプリケーションにおいて、高DPI設定をサポートします。
アプリケーションでDPIサポートを有効化する方法の詳細については、Microsoft社のWebサイトを参照してください。
次の例では、.NET Framework 4.5.2でDPIサポートを有効にするための一般的な手順について説明します。
コード |
コードのコピー
|
---|---|
<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> |
コード |
コードのコピー
|
---|---|
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(); } |
どのウィンドウを作成する場合でも、事前にSetProcessDPIAware APIを呼び出す必要があります。これをせず、このAPIを使用する前に作成されたウィンドウでは、不適切なサイズやフォントが使用されます。 |
コード |
コードのコピー
|
---|---|
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" /> </appSettings> </configuration> |
OSのDPI設定を変更した場合、コントロール全体がDPIの設定に応じて拡大されます。ただし、SPREAD内の行の高さ等はDPIに応じて変更されません。行の高さ等もDPIに応じたサイズへ対応するにはSpreadScaleModeプロパティを使用します。このプロパティを設定することにより200%までのWindows XP 形式スケーリングをサポートします。
※AutoScaleModeがDPI以外に設定されている場合、SPREADのSpreadScaleModeプロパティは正常に機能しません。
データ連結している場合、SpreadScaleModeプロパティはDataAutoSizeColumnsプロパティの設定により、下記のように動作します。
■DPIの設定に応じてサイズが変更するコンテンツ
SpreadScaleModeプロパティ | |||
ZoomDpiSupport | None(デフォルト) | ||
DataAutoSizeColumns プロパティ |
True | 列幅および行高さ | 列幅のみ |
False | 列幅および行高さ | なし |
※コントロール自体のサイズは設定値に関わらず拡大されます。
SPREADのスケーリングは、.NET Frameworkの自動スケーリング上で動作します。SpreadScaleModeプロパティを利用する場合、あらかじめ、.NET Frameworkの自動スケーリングの動作を理解しておいて頂く必要があります。
詳細については下記MSDNを参照してください。
|
SPREADでは、200%までの高DPIをサポートできます。これには SpreadScaleMode プロパティを使用します。DPI に基づいた行、列、セル、およびデータのリサイズがサポートされます。
自動スケーリングは、フォームのロード時にのみ行われます。実行時では、コントロールのサイズや位置が変更された時点、およびコンテナのレイアウトが一時停止された時点で、スケーリングが変更される可能性があります。
最適な結果を得るには、SpreadScaleMode プロパティの ZoomDpiSupport オプションを使用する場合、コンテナの AutoScaleMode プロパティを「Dpi」に設定します。
次のサンプルコードは、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) |