■36756 / inTopicNo.3) |
Re[1]: VB6→.NETでのエラーについて |
□投稿者/ 魔界の仮面弁士 (1121回)-(2009/06/04(Thu) 20:55:02)
|
■No36750 (きらつね さん) に返信 > .NETはおろかVB6すら知識が乏しいのでとても困っています。 元の VB6 コードの意味を説明できる程度の知識はお持ちでしょうか? VB6 も VB.NET も両方知らない状態からのコンバートは、流石に厳しいかと思います。
今となっては、VB6 ユーザー向けの VB.NET 解説書は減っていますし、コンバートに関して 書かれた記事は、VB6 の知識があることを前提に書かれている事が多いからです。
一応、VB6 ユーザー向けにかかれた VB.NET 用参考書籍を紹介しておきます。 2002 当時の物ですし、VB6 の知識を前提としているので、今回の件で役に立つかどうかは分かりませんが。 http://www.amazon.co.jp/gp/product/4798102164/
> 1.グラフ描画の設定や命令がアップグレードされない > Picture1.DrawWidth > Picture1.Line > Picture1.PSet > Picture1.cls
DrawWidth プロパティは線の太さ。 → Pen クラスの Width プロパティが近いかと思います。
Line 特殊メソッドは線の描画。 → Graphics クラスの DrawLine メソッドが相当します。
PSet 特殊メソッドは点の描画。 → Graphics クラスの FillEllipse メソッド。点ではなく、塗りつぶし円での代用となります。 なお、DrawWidth = 1 の場合には、円のかわりに 1ドットの線や矩形で代用する事もできます。
Cls メソッドはキャンパスのクリア。 → Graphics クラスの Clear メソッドを利用できます。
> 上記の命令と同等の処理を行いたいときはどのような方法があるのでしょうか。 どぼん!さんのサイトにある、描画処理の Tips 集に目を通しておかれると良いかと。 http://dobon.net/vb/dotnet/graphics/index.html
> 2.テキストがはみ出る > アップグレードしたあとのフォームではVB6ではうまく表示できていた文字が範囲内に収まらずに長さが足りなくなり表示できないものがあります。 幾つかの理由があるかと思いますが、VB6 では「GDI」、.NET では「GDI+」を用いて 描画処理を行うため、微妙に異なる部分も出てくるかと思います。
グラフ描画等で、細かい位置制御が必要なのであれば、下記の資料が参考になるかもしれません。 http://msdn.microsoft.com/ja-jp/library/dd297679.aspx
> VB6でフォントサイズ16のものが.NETでは15.75と小さくなっているのですが表示されないのはどうしてでしょうか。 設定しようとしたサイズが 16 で、実際に割り当てられたサイズが 15.75 ということだと思います。
VB6 で、Form のフォントサイズを 16 にしたうえで、 MsgBox Me.Font.Size などと実行してみてください。きらつねさんの環境では、16 と表示されますか? (少なくとも私の環境では、15.75 と表示されました)
また、下記のコードも試してみてください。
' VB6 Private Sub Form_Load() Dim sf As Font Set sf = New StdFont sf.Name = "MS ゴシック" sf.Charset = 128 sf.Size = 16 MsgBox sf.Size Set Label1.Font = sf End Sub
> また、HeightやWidthといったボックスのサイズの規格も変わっているようで単純に大きさの比較が出来ません。 コントロール の Height/Width は、.NET ではピクセル単位系が使用されています。
VB6 の場合は、既定値では Twip 単位系が使用されています(1 論理 cm = 567 twip、1 論理インチ = 1,440twip)。 VB6 の単位系は、親コンテナ(フォーム等)の ScaleMode プロパティで単位系を変更できます。たとえば ScaleMode = vbPixels に設定されていれば、VB6 でもピクセル単位系となります。
なお、比較のために VB.NET でも Twip との相互変換が必要なのであれば、 参照設定に Microsoft.VisualBasic.Compatibility を加えたうえで、 Dim x As Single = Microsoft.VisualBasic.Compatibility.VB6.TwipsPerPixelX() Dim y As Single = Microsoft.VisualBasic.Compatibility.VB6.TwipsPerPixelY() というコードを使うことができます。これらは、VB6 でいうところの x = Screen.TwipsPerPixelX y = Screen.TwipsPerPixelY に相当する値で、「1 ピクセルあたりの Twip 数」を得るためのものです。
> 3.ファイルがリネームされる > Sizeという変数がアップロードの際、Size_Renameという名前に変わっていました。 VB.NET のフォームには、Size というプロパティがあります。また、Size 型も存在します。 それらとの混同を避けるため、変数名 Size が利用されていた部分については、 すべて別の名前に変更されたのだと思います。
|
|