MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > 製品の使用方法 > 高DPIのサポート |
SPREADでは、高DPIのサポートが有効なアプリケーションにおいて、高DPI設定をサポートします。アプリケーションのDPIのサポートを有効にする方法については、Microsoft社のWebサイトを参照してください。
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 |
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); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; fpSpread1.Location = new System.Drawing.Point(23, 86); fpSpread1.Size = new System.Drawing.Size(356, 161); fpSpread1.SpreadScaleMode = FarPoint.Win.Spread.ScaleMode.ZoomDpiSupport; fpSpread1.ResumeLayout(); |
Visual Basic |
コードのコピー
|
---|---|
FpSpread1.SuspendLayout() AutoScaleDimensions = New System.Drawing.SizeF(96.0F, 96.0F) AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi FpSpread1.Location = New System.Drawing.Point(23, 86) FpSpread1.Size = New System.Drawing.Size(356, 161) FpSpread1.SpreadScaleMode = FarPoint.Win.Spread.ScaleMode.ZoomDpiSupport FpSpread1.ResumeLayout() |
DPIのサポートを有効化するには、次の手順を実行します。
App.config |
コードのコピー
|
---|---|
<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7"/> </startup> <System.Windows.Forms.ApplicationConfigurationSection> <add key="DpiAwareness" value="PerMonitorV2"/> <!-- 修正を適用しない場合は、各コメントを解除してください。 --> <!-- <add key="Form.DisableSinglePassScalingOfDpiForms" value="true"/> <add key="ToolStrip.DisableHighDpiImprovements" value="true"/> <add key="CheckedListBox.DisableHighDpiImprovements" value="true"/> <add key="MonthCalendar.DisableHighDpiImprovements" value="true"/> <add key="AnchorLayout.DisableHighDpiImprovements" value="true"/> <add key="DataGridView.DisableHighDpiImprovements" value="true"/> --> </System.Windows.Forms.ApplicationConfigurationSection> </configuration> |
App.manifest |
コードのコピー
|
---|---|
<?xml version="1.0" encoding="utf-8"?> <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <!-- UACマニフェストオプション。Windowsユーザーアカウント制御レベルを変更する場合は、requestedExecutionLevelノードを、以下のいずれかに置換します。 --> <!-- <requestedExecutionLevel level="asInvoker" uiAccess="false" /> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> --> <!-- requestedExecutionLevel要素を指定することで、ファイルおよびレジストリの仮想化を無効にします。下位互換性を維持するために、この仮想化がアプリケーションに必要となる場合は、この要素を削除します。 --> <requestedExecutionLevel level="asInvoker" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- このアプリケーションがテスト済みであり、使用が想定されるWindowsバージョンのリスト。適切な要素をコメント解除すると、Windowsは最も互換性の高い環境を自動選択します。 --> <!-- Windows 10 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> </application> </compatibility> <!-- <application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> </windowsSettings> </application> --> </assembly> |
Program.cs |
コードのコピー
|
---|---|
static class Program { // <summary> // アプリケーションのメインのエントリポイントです。 // </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } |
Form1.designer.cs |
コードのコピー
|
---|---|
this.fpSpread1.SpreadScaleMode = FarPoint.Win.Spread.ScaleMode.ZoomDpiSupport; this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; |