■ Visual Basic 6.0 との相違点 ■
Visual Basic 6.0 では、Form コントロール、又は、PictureBox コントロールに描画する場合は、グラ フィックスの各種メソッドとプロパティを使用する。Visual Basic 6.0 のグラフィックスは、Windows のグラフィックデバイスインターフェイス(GDI)の API に基づいて居る。
Visual Basic 2005 のグラフィックスは、GDI+ API にカプセル化された System.Drawing 名前空間に 依って提供される。GDI+は Visual Basic 6.0 のグラフィックス機能に基づいて拡張されて居るが、メ ソッドに互換性は無い。
■ 概念の違い
Visual Basic 6.0 では、グラフィックスメソッドは、Form オブジェクトと PictureBox コントロール丈 に適用される。
Visual Basic 2005 では、グラフィックスメソッドは、フォームに加えて、PictureBox、Panel、GroupBox 等、Paint イベントをサポートする任意のコントロールに適用される。亦、グラフィックスメソッドは、 ListView、TreeView、Button コントロール等、OwnerDraw プロパティをサポートする任意のコント ロールにも適用される。 AutoRedraw プロパティ Visual Basic 6.0 のグラフィックスメソッドは、任意のイベントプロシージャから呼び出す事が出来る。 グラフィックスメソッドが、Paint 以外のイベントから呼び出された場合は、グラフィックスを永続化 する為にAutoRedraw プロパティが使用される。
Visual Basic 2005 では、グラフィックスメソッドは、Paint イベントプロシージャ而巳から呼び出され る。但し、オーナー描画コントロールの場合、様々な Draw イベントプロシージャ(DrawItem、 DrawSubItem 等)からも呼び出される。Paint イベントと Draw イベントで自動的にグラフィックス が永続化されるので、AutoRedraw プロパティは不要に成り、サポートされなく成った。
ClipControls プロパティ
Visual Basic 6.0 では、フォームやコントロールの描画を制御する為に、ClipControls プロパティを使 用する。此のプロパティを True に設定すると、其れ迄見えて居なかった領域而巳が再描画され、理論 上はパフォーマンスが向上する。
ClipControls プロパティに相当する物は、Visual Basic 2005 には無い。GDI+に依るパフォーマンス 向上と、最新のビデオアダプタの使用で、此のプロパティの必要は無く成った。
DrawMode プロパティ
Visual Basic 6.0 では、パターンを別のパターンの上に描画する時に DrawMode プロパティに依ってグ ラフィックスオブジェクトの色が制御される。此のプロパティが効力を持つのは、モノクロディスプレ イか解像度の低い(256 色以下)ディスプレイ丈で有る。
グ
DrawMode プロパティに相当する物は、Visual Basic 2005 に無い。現在のディスプレイでは不要に成 った。
DrawStyle プロパティ
Visual Basic 6.0 では、Line メソッドを使用して描画する線の外観を制御する為に、DrawStyle プロパ ティを使用する。DrawWidth プロパティが 1 より大きい値に設定されて居る場合、DrawStyle プロパ ティは無効に成り、線は常に実線に成る。
Visual Basic 2005 では、DrawLine メソッドの 1 つで使用される System.Drawing.Pen クラスの DashStyle プロパティを設定する事で、線の外観を制御する。線の幅は、此のプロパティに影響されな い。
DrawWidth プロパティ
Visual Basic 6.0 では、DrawWidth プロパティで線のピクセル幅が決定される。通常、DrawWidth プ ロパティは、グラフィックスメソッドを実行する前に設定する。
Visual Basic 2005 では、System.Drawing.Pen コントロールの Pen.Width プロパティで線の幅が決定 される。Pen の作成時に Width プロパティをパラメータと仕て設定するか、Pen の作成後に Pen.Width を設定出来る。Pen.Width プロパティを指定しない場合、既定は 1 ピクセルで有る。
Image プロパティ
Visual Basic 6.0 では、フォームや PictureBox コントロールの Image プロパティは、ビットマップの ハンドルを返す。此のハンドルは、Picture プロパティに割り当てたり、Windows API の呼び出し時に 値と仕て渡したり出来る。
Visual Basic 2005 では、ビットマップにハンドルは無く成った。ビットマップ其の物を Bitmap 型の オブジェクトと仕て渡す。Bitmap コントロールは、PictureBox コントロールの Image プロパティに 割り当てる事が出来るが、Windows API の呼び出し時に渡す事は出来ない。
Line メソッド
Visual Basic 6.0 では、Line メソッドは、左上と下部の座標とオプションの引数 B を指定して、四角形 を描画する為に使用する。FillColor プロパティは純色で四角形を塗り潰すのに使用し、FillStyle プロ パティはクロスハッチパターンで四角形を塗り潰すのに使用する。
Visual Basic 2005 では、DrawRectangles メソッドは四角形の境界線を描画するのに使用し、 FillRectangle メソッドは四角形を塗り潰すのに使用する。FillRectangle は、Brush オブジェクトをパ ラメータと仕て受け取る。FillColor プロパティは SolidBrush に置き換えられ、FillStyle プロパティは HatchBrush クラスのメンバに置き換えられた。
Point メソッド
Visual Basic 6.0 では、フォームや PictureBox コントロールの Point メソッドは、指定の場所に有るピ クセルのカラー値を取得するのに使用する。Point メソッドは、画像の無いフォームやコントロールで も使用出来るが、殆どの場合は、Picture プロパティに割り当てられたビットマップのカラーを取得す る為に使用される。
Visual Basic 2005 では、Point メソッドは無く成った。ビットマップからカラー値を取得するには、 M:System.Drawing.Bitmap.GetPixel(System.Int32,System.Int32) メソッドを使用する。フォームや
コントロールに画像が無い場合は、BackColor プロパティを使用出来る。 Print メソッド
Visual Basic 6.0 では、Print メソッドは、フォームや PictureBox コントロールにテキストを表示する のに使用する。テキストの表示に使うフォントは、フォームやコントロールのFont プロパティで決定 され、色はForeColor プロパティで決定される。Print メソッドには、テキストの配置を決めたり、テ キストを縦方向に表示したりする機能は無い。
Visual Basic 2005 では、テキストの表示に DrawString メソッドを使用する。フォントは Font オブジ ェクトに依って決定され、色はBrush オブジェクトに依って決定される。孰れのオブジェクトも、パラ メータと仕てDrawString メソッドに渡す。DrawString メソッドには、X と Y と謂うパラメータも有
り、此等を使ってテキストの開始位置を指定出来る。亦、オプションの Format パラメータに
StringFormat オブジェクトを渡して、テキストを縦方向に表示する事も出来る。 PSet メソッド
Visual Basic 6.0 では、PSet メソッドは、フォーム上や PictureBox コントロール上のピクセルの色を 変更するのに使用する。DrawWidth プロパティが 1 より大きい値に設定されて居る場合は、PSet メソ ッドは塗り潰された円を描画する。省略されたForeColor を使用する場合は、省略可能なパラメータを 使って色を指定する。
Visual Basic 2005 には、PSet メソッドに相当する物は無い。フォーム上や PictureBox コントロール 上の1 ピクセルの色を変更するには、DrawEllipse メソッドを使って高さと幅が 1 ピクセルの円を描画 する。DrawWidth が 1 より大きい場合に PSet と同等の機能を実現するには、FillEllipse メソッドを 使用する。
■ グラフィックスを扱うコードの変更
次のコード例では、Visual Basic 6.0 と Visual Basic 2005 でのコーディング テクニックの違いを示す。 ※ Visual Basic 6.0 の既定の測定単位は twip だが、Visual Basic 2005 の測定単位はピクセルで有る。 単純な線の描画
次のコードは、実行時にフォーム上に線を描画する方法を示す。Visual Basic 6.0 のコード例では、Line メソッドを使用し、パラメータと仕て線の開始位置と終了位置の X 座標と Y 座標を渡し、オプション の引数と仕て色を渡す。Visual Basic 2005 のコード例では、DrawLine メソッドを使用し、引数と仕て Pens オブジェクトと、開始位置と終了位置の X 座標と Y 座標を渡す。
Visual Basic 6.0
Private Sub Form_Paint( )
' Draw a solid black line 200 twips from the top of the form. Line (0, 200) - (ScaleWidth, 200), vbBlack
End Sub
Visual Basic 2005
Private Sub Form1_Paint(ByVal sender As Object, ByVal e _
' Draw a solid black line 25 pixels from the top of the form. e.Graphics.DrawLine(Pens.Black, 0, 25, Me.Width, 25) End Sub
点線の描画
次のコードは、実行時にフォーム上に点線を描画する方法を示す。Visual Basic 6.0 のコード例では、 DrawStyle プロパティを使用して線の外観を指定する。Visual Basic 2005 のコード例では、Pen オブ ジェクトを使用し、DashStyle プロパティを設定して外観を指定する。
Visual Basic 6.0
Private Sub Form_Paint( )
' Draw a dotted line 200 twips from the top of the form. Me.DrawStyle = vbDot
Line (0, 200) - (ScaleWidth, 200), vbBlack End Sub
Visual Basic 2005
Private Sub Form1_Paint1(ByVal sender As Object, ByVal e As _ System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint ' Draw a dotted black line 25 pixels from the top of the form.
Dim LPen As New System.Drawing.Pen(System.Drawing.Color.Black) LPen.DashStyle = Drawing2D.DashStyle.Dot
e.Graphics.DrawLine(LPen, 0, 25, Me.Width, 25) End Sub
線の太さの制御
次のコードは、実行時にフォーム上に太さの異なる複数の線を描画する方法を示す。Visual Basic 6.0 のコード例では、DrawWidth プロパティを使用する。Visual Basic 2005 のコード例では、Pens オブ ジェクトのWidth プロパティを使用する。
Visual Basic 6.0
Private Sub Form_Paint( )
' Draw a line with a thickness of 1 pixel. DrawWidth = 1
Line (0, 200)-(ScaleWidth, 200), vbBlack ' Draw a line with a thickness of 5 pixels. DrawWidth = 5
Line (0, 400)-(ScaleWidth, 400), vbBlack ' Draw a line with a thickness of 10 pixels. DrawWidth = 10
Line (0, 600)-(ScaleWidth, 600), vbBlack End Sub
Visual Basic 2005
Private Sub Form1_Paint2(ByVal sender As Object, ByVal e As _ System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
' Draw a line with a thickness of 1 pixel.
Dim TPen As New System.Drawing.Pen(System.Drawing.Color.Black, 1) e.Graphics.DrawLine(TPen, 0, 25, Me.Width, 25)
' Draw a line with a thickness of 5 pixels. TPen.Width = 5
e.Graphics.DrawLine(TPen, 0, 50, Me.Width, 50) ' Draw a line with a thickness of 10 pixels. TPen.Width = 10
e.Graphics.DrawLine(TPen, 0, 75, Me.Width, 75) End Sub
円の描画
次のコードは、実行時にフォーム上に円を描画する方法を示す。Visual Basic 6.0 のコード例では、Circle メソッドを使用し、引数と仕て円の中心点の X 座標と Y 座標と半径を渡し、オプションで色を渡す。 Visual Basic 2005 のコード例では、DrawEllipse メソッドを使用し、引数と仕て Pen オブジェクト、 外接する四角形の左上隅のX 座標と Y 座標、幅と高さを渡す。
Visual Basic 6.0
Private Sub Form_Paint( )
' Draw a 1000 twip diameter red circle Circle (500, 500), 500, vbRed
End Sub
Visual Basic 2005
Private Sub Form1_Paint3(ByVal sender As Object, ByVal e As _ System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint ' Draw a 70 pixel diameter red circle.
e.Graphics.DrawEllipse(Pens.Red, 0, 0, 70, 70) End Sub
塗り潰された四角形の描画
次のコードでは、実行時に2 つの四角形をフォーム上に描画する。1 つの四角形は純色で塗り潰し、今 1 つの四角形はクロスハッチパターンで塗り潰す。Visual Basic 6.0 のコード例では、FillColor プロパ ティとFillStyle プロパティ、及び、Line メソッドを使用する。B パラメータを指定して Line メソッド を呼び出して、四角形を描画する。
Visual Basic 2005 の コ ー ド 例 で は 、 Graphics.Rectangle メ ソ ッ ド を 使 っ て 輪 郭 を 描 画 し 、 Graphics.FillRectangle メソッドに引数と仕て Brush オブジェクトを渡す。此の例では、SolidBrush コントロールとHatchBrush コントロールの両方を使用する。
Visual Basic 6.0
Private Sub Form_Paint( ) ' Draw a solid red rectangle. FillColor = vbRed
FillStyle = vbSolid
Line (10, 10)- (1000, 500), vbRed, B
' Draw a rectangle filled with a crosshatch pattern. FillColor = vbBlack
FillStyle = vbCross
Line (10, 500)- (1000, 1000), vbBlack, B End Sub
Visual Basic 2005
Private Sub Form1_Paint4(ByVal sender As Object, ByVal e As _ System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint ' Draw a solid red rectangle.
Dim SBrush As New System.Drawing.SolidBrush _ (System.Drawing.Color.Red)
e.Graphics.DrawRectangle(Pens.Red, 2, 2, 70, 40) e.Graphics.FillRectangle(SBrush, 2, 2, 70, 40) ' Draw a rectangle filled with a crosshatch pattern.
Dim HBrush As New System.Drawing.Drawing2D.HatchBrush( _ System.Drawing.Drawing2D.HatchStyle.Cross, _ System.Drawing.Color.Black, System.Drawing.Color.Transparent) e.Graphics.DrawRectangle(Pens.Black, 2, 40, 70, 40) e.Graphics.FillRectangle(HBrush, 2, 40, 70, 40) End Sub フォーム上での画像の表示 次のコードは、グラフィックスメソッドを使って、実行時にフォーム上に画像を表示する方法を示す。 Visual Basic 6.0 のコード例では、PaintPicture メソッドを使用する。Visual Basic 2005 のコード例で は、DrawImage メソッドを使用する。
Visual Basic 6.0
Private Sub Form_Paint( ) ' Create a stdPicture object. Dim Pict1 As New stdPicture
Pict1 = LoadPicture("C:¥Windows¥Greenstone.bmp") PaintPicture Pict1, 0, 0
End Sub
Visual Basic 2005
Private Sub Form1_Paint5(ByVal sender As Object, ByVal e As _ System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint ' Create a Bitmap object.
Dim Pict1 As New Bitmap("C:¥Windows¥Greenstone.bmp") e.Graphics.DrawImage(Pict1, 0, 0)
フォーム上でのテキストの表示
次のコードは、グラフィックスメソッドを使って、実行時にフォーム上にテキスト文字列を表示する方 法を示す。Visual Basic 6.0 のコード例では、Print メソッドを使用する。Visual Basic 2005 のコード 例では、DrawString メソッドを使用する。
Visual Basic 6.0
Private Sub Form_Paint( ) Me.Font.Size = 24 Me.Font.Bold = True Me.ForeColor = vbRed Print "Hello World!" End Sub
Visual Basic 2005
Private Sub Form1_Paint6(ByVal sender As Object, ByVal e As _ System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim TextFont As New System.Drawing.Font("Arial", 24, FontStyle.Bold)
Dim TextBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Red) e.Graphics.DrawString("Hello World!", TextFont, TextBrush, 10, 10)
TextFont.Dispose( ) TextBrush.Dispose( ) End Sub
文字列の高さと幅の確認
次のコードは、グラフィックスメソッドを使って、実行時にフォーム上の文字列のサイズを確認し、其 の周囲に四角形を描画する方法を示す。Visual Basic 6.0 のコード例では、TextHeight メソッドと TextWidth メソッドを使用する。Visual Basic 2005 のコード例では、MeasureString メソッドを使用 する。此のメソッドは、SizeF 構造体を返す。
Visual Basic 6.0
Private Sub Form_Paint( ) Me.Font.Size = 24 Me.Font.Bold = True Me.ForeColor = vbRed Print "Hello World!"
Line (0, 0)-(TextWidth("Hello World!"), TextHeight("Hello World!")), vbBlack, B End Sub
Visual Basic 2005
Private Sub Form1_Paint7(ByVal sender As Object, ByVal e As _ System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
Dim TextFont As New System.Drawing.Font("Arial", 24, FontStyle.Bold)
Dim TextBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Red) e.Graphics.DrawString("Hello World!", TextFont, TextBrush, 10, 10)
TextSize = e.Graphics.MeasureString("Hello World!", TextFont)
e.Graphics.DrawRectangle(Pens.Black, 10, 10, TextSize.Width, TextSize.Height) TextFont.Dispose( )
TextBrush.Dispose( ) End Sub
単一のピクセルの描画
次のコードは、グラフィックスメソッドを使って、実行時にフォーム上の1 ピクセルの色を変更する方 法を示す。Visual Basic 6.0 のコード例では、PSet メソッドを使用する。Visual Basic 2005 のコード 例では、DrawEllipse メソッドを使用し、Height パラメータと Width パラメータを 1 に設定する。
Visual Basic 6.0
Private Sub Form_Paint( ) Me.DrawWidth = 1 PSet (1000, 1000), vbRed End Sub
Visual Basic 2005
Private Sub Form1_Paint8(ByVal sender As Object, ByVal e As _ System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint e.Graphics.DrawEllipse(Pens.Red, 70, 70, 1, 1)
End Sub
単一ピクセルの色の確認
次のコードは、グラフィックスメソッドを使って、実行時にフォーム上の画像の指定した位置に有る 1 ピクセルの色を確認し、其の色で四角形を塗り潰して描画する方法を示す。Visual Basic 6.0 のコード 例では、Point メソッドを使ってカラー値を取得する。Visual Basic 2005 のコード例では、GetPixel メソッドを使用する。
Visual Basic 6.0
Private Sub Form_Paint( ) Dim PixelColor As Long
Picture1.Picture = LoadPicture("C:¥Windows¥Greenstone.bmp") PixelColor = Picture1.Point(10, 10) FillColor = PixelColor Line (0, 0)-(100, 500), PixelColor, B End Sub Visual Basic 2005
Private Sub Form1_Paint9(ByVal sender As Object, ByVal e As _ System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint Dim Pict1 As New Bitmap("C:¥Windows¥Greenstone.bmp") Picture1.Image = Pict1
Dim PixelColor As Color = Pict1.GetPixel(4, 4) Dim PixelBrush As New SolidBrush(PixelColor)
e.Graphics.FillRectangle(PixelBrush, 0, 0, 100, 100) End Sub
グラフィックスプロパティとメソッドの対応関係
次の表は、Visual Basic 6.0 のグラフィックスプロパティやメソッドと、Visual Basic 2005 で其等に相 当する物を示す。
Visual Basic 6.0 Visual Basic 2005 での同等物
AutoRedraw プロパティ 新規実装(グラフィックスを永続化するには、Paint イベントにグラフ ィックスメソッドを記述する) Circle メソッド DrawEllipse メソッド ClipControls プロパティ 新規実装(ClipControls プロパティは不要に成った) Cls メソッド Clear メソッド CurrentX プロパティ 各種グラフィックスメソッドのx パラメータ(例えば DrawRectangle (pen, x, y, width, height))
CurrentY プロパティ 各種グラフィックスメソッドのy パラメータ(例えば DrawRectangle (pen, x, y, width, height))
DrawMode プロパティ 新規実装(DrawMode プロパティは不要に成った) DrawStyle プロパティ DashStyle プロパティ DrawWidth プロパティ Width プロパティ FillColor プロパティ SolidBrush オブジェクト FillStyle プロパティ HatchBrush オブジェクト HasDC プロパティ 新規実装(GDI+では、デバイスコンテキストは不要に成った) HDC プロパティ 新規実装(GDI+では、デバイスコンテキストは不要に成った) Image プロパティ 新規実装 Line メソッド DrawLine メソッド PaintPicture メソッド DrawImage メソッド Point メソッド 直接対応する項目は無い(ビットマップには、Bitmap.GetPixel を使用 する。フォームやコントロールには、BackColor プロパティを使用する) Print メソッド DrawString メソッド
Pset メソッド DrawEllipse メソッド、FillEllipse メソッド TextHeight プロパティ MeasureString メソッド
TextWidth プロパティ ■ アップグレード
アプリケーションをVisual Basic 6.0 から Visual Basic 2005 にアップグレードすると、グラフィック スメソッドはアップグレードされず、警告がコードに挿入される。GDI と GDI+では大きな違いが有る ので、既存のグラフィックスコードは書き直す必要が有る。
■ 座標系 ■
Visual Basic 2005 では、フォームやコントロールの座標は、Visual Basic 6.0 とは異なる方法で表現さ れる。フォームのサイズ変更や移動の方法も異なる。
■ 概念の違い
Visual Basic 6.0 では、フォームやコントロールの座標は twip で表現される。Visual Basic 2005 では、 座標はピクセルで表現される。
Height プロパティと Width プロパティ
Visual Basic 6.0 では、Height プロパティと Width プロパティが、フォームやコントロールのサイズ 変更に使用される。Visual Basic 2005 では、Size プロパティを使って、高さと幅を一度に変更する事 も出来る。
Move メソッド
Visual Basic 6.0 では、フォームやコントロールの位置を実行時に変更する為に Move メソッドを使用 する。Visual Basic 2005 では、Move は SetBounds メソッドに置き換えられ、座標はピクセルで表現 される。
ScaleMode プロパティ
Visual Basic 6.0 では、ScaleMode プロパティを使って別の座標系を定義する事も出来る。Visual Basic 2005 では、サポートされる座標系はピクセル丈で有る。ScaleMode プロパティと其れと関連するプロ パティやメソッド(Scale、ScaleHeight、ScaleLeft、ScaleTop、ScaleWidth、ScaleX、ScaleY)は Visual Basic 2005 ではサポートされない。詳細に付いては、「ScaleMode がサポートされて居ない」 を参照され度い。
■ 座標を扱うコードの変更
次のコード例では、Visual Basic 6.0 と Visual Basic 2005 でのコーディングテクニックの違いを示す。 フォームのサイズ変更
実行時にフォームのサイズを変更する方法の例を次に示す。
Visual Basic 6.0
' Measurements are in twips. Me.Width = 8000
Me.Height = 6000
Visual Basic 2005
' Measurements are in pixels.
コントロールの移動
実行時にコントロールを移動する方法の例を次に示す。
Visual Basic 6.0
' Move and retain original size. CommandButton2.Move 2000, 1000 ' Move and resize to 1200 by 800 twips. CommandButton1.Move 0, 0, 1200, 800
Visual Basic 2005
' Move and retain original size.
Button2.SetBounds(20, 10, 0, 0, BoundsSpecified.X Or BoundsSpecified.Y) ' Move and resize to 120 by 80 pixels.
Button1.SetBounds(0, 0, 120, 80) ■ アックアップグレード
Visual Basic 6.0 アプリケーションを Visual Basic 2005 にアップグレードすると、フォームとコントロ ールのHeight プロパティと Width プロパティの値は自動的にピクセルに変換される。
元のアプリケーションで ScaleMode プロパティを使用して居た場合、アップグレードツールは、 ScaleMode プロパティのデザイン時設定が twip で有ると仮定する。其れ以外の場合は、正しく変換さ れない為、修正が必要で有る。詳細に付いては、「ScaleMode がサポートされて居ない」を参照され度 い。
■ ScaleMode がサポートされて居ない ■ ■ 概要
Visual Basic 6.0 では、ScaleMode プロパティを使用して、フォームや PictureBox コントロールの座 標系を既定スケールで有るtwip から変更出来た。 Visual Basic 2005 では複数の座標系はサポートされず、ピクセル丈がサポートされて居る。アップグ レードの時、座標系は自動的にtwip からピクセルに変換される。コードで ScaleMode プロパティを実 行時に設定して居る場合は、コンパイルエラーが発生する為、コードを変更する必要が有る。 ※ アップグレードツールは、ScaleModeプロパティのデザイン時設定が twip で有る事を仮定して居る。 其れ以外の場合は、正しく変換されない為、修正が必要で有る。 ■ 移行方法 先ず、ScaleMode プロパティを設定して居るコード行を削除する。 次に、ScaleMode プロパティに基づいたコードを見直し、必要に応じて計算を変更する。インチ単位の ScaleMode を使用していたプロシージャを変更する方法の例を次のコードに示す。 Visual Basic 6.0 Form1.ScaleMode = vbInches Text1.Move 2, 1 上のプロシージャは、テキスト ボックスをフォームの左上隅から右に 2 インチ、下に 1 インチ移動す る。アップグレードすると、下記のコードに変換される。 Visual Basic 2005
' After upgrade to Visual Basic 2005
'UPGRADE ISSUE: Constant vbInches was not upgraded.
'UPGRADE ISSUE: Form property Form1.ScaleMode is not supported. ' The next line must be removed in order to compile.
Form1.ScaleMode = vbInches
' Twips are converted to pixels, but the original inch values are used. Text1.SetBounds(VB6.TwipsToPixelsX(2), VB6.TwipsToPixelsX(1),...
アップグレードすると、此のプロシージャは、テキストボックスを右に2 ピクセル、下に 1 ピクセル移 動する。此れは目的の動作と異なるので、下記の様に訂正する。
Visual Basic 2005
' Modified Visual Basic 2005 code ' Removed the ScaleMode line.
' Convert the scale (1 inch = 1440 twips).
Text1.SetBounds(VB6.TwipsToPixelsX(2880), VB6.TwipsToPixelsX(1440),...
インチに1440 を掛けて twip をピクセルに変換する事に依り、元の Visual Basic 6.0 コードと同じ結果 が得られる。