DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

VB6のScaleHeight、ScaleWidthプロパティに代わるものは?

MSDNの「Visual Basic .NET における Form オブジェクトの変更点」によると、これらに代わるものはありません。ただし、座標の単位がピクセルの場合は、FormクラスのClientRectangleプロパティやClientSizeプロパティのHeight、Widthプロパティがその代わりとして使えます。

ただし、コントロールの大きさをフォームの大きさに合わせて変える目的でScaleHeightとScaleWidthプロパティを使用するのであれば、DockやAnchorプロパティを使うのがよいでしょう。

MSDNの「ScaleMode がサポートされていない」によると、VB6のコードをVisual Studioによりアップグレードすると、VB6.TwipsToPixelsXやTwipsToPixelsYを使って単位をtwipからピクセルに変換するようです。

なおC#でTwipsToPixelsXやTwipsToPixelsYを使うには、「参照設定」に「Microsoft.VisualBasic.Compatibility」を追加し、

C#
コードを隠すコードを選択
Microsoft.VisualBasic.Compatibility.VB6.Support.TwipsToPixelsX(500)
Microsoft.VisualBasic.Compatibility.VB6.Support.TwipsToPixelsY(800)

のようにして呼び出します。もしこれらのメソッドを使いたくないのであれば、次のようにしてTwipsPerPixelXとTwipsPerPixelYの値を計算することもできます。なおここではフォームクラス内に記述するものとし、フォームのある画面のTwipsPerPixelXとTwipsPerPixelYの値を計算しています。

VB.NET
コードを隠すコードを選択
Dim g As Graphics = Me.CreateGraphics()
Dim TwipsPerPixelX As Single = 1440.0F / g.DpiX
Dim TwipsPerPixelY As Single = 1440.0F / g.DpiY
g.Dispose()
C#
コードを隠すコードを選択
Graphics g = this.CreateGraphics();
float TwipsPerPixelX = 1440f / g.DpiX;
float TwipsPerPixelY = 1440f / g.DpiY;
g.Dispose();

しかしながら、TwipsToPixelsXやTwipsToPixelsYはできるだけ使わない方が良いでしょう。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • 「???を参照に追加します」の意味が分からないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。