タイトル | : メタファイルの作成 |
記事No | : 2997 |
投稿日 | : 2006/01/27(Fri) 12:26 |
投稿者 | : colab |
[OSのVer]:Windows XP [VBのVer]:VB.NET 2003 いつも質問をするばかりで申し訳ありません。 メタファイルの作成について教えてください。 Old.emfをひな型として、これに図形や文字を 追加したいと思っています。 以下のようなコードで機能的には実現できるのですが 作成されたファイルNew.emfのサイズ(713*191)がOld.emf(669*180)と異なります。 自分なりには調べたのですが、なぜこのようになるのかわかりません。 原因や対処法などご教授いただけないでしょうか? よろしくお願いいたします。
Private Sub MakeFigP03() 'アプリケーションのフルパスを取得する。 Dim MyPath As String = Application.StartupPath 'イメージオブジェクトの宣言 Dim img As Image Dim StrFormat As New StringFormat Dim Fnt As New Font("MS UI Gothic", 12) Dim RectF As RectangleF 'イメージオブジェクトを作成し、基となるメタファイルを読み込む。 img = Image.FromFile(MyPath & "\fig_s\Old.emf") 'formのインスタンスをつくる。 Dim xxx As New Form Dim gr As Graphics = xxx.CreateGraphics 'メタファイルを読み込み新たにMetaFileオブジェクトを作成する。 Dim Mf As New Metafile(MyPath & "\tempfig\New.emf", _ gr.GetHdc, EmfType.EmfOnly) 'メタファイル加工 Dim mfgr As Graphics = Graphics.FromImage(Mf) mfgr.DrawImage(img, 0, 0) '水平(中央)垂直(中央)揃え StrFormat.Alignment = StringAlignment.Center StrFormat.LineAlignment = StringAlignment.Center 'フォントの指定 Fnt = New Font("MS UI Gothic", 9) ' Dim i As Integer Dim strDumy As String '所定の位置に●を描画 For i = 1 To 6 mfgr.DrawRectangle(Pens.Red, 8, 27 + 22 * (i - 1), 38, 18) RectF = New RectangleF(8, 27 + 22 * (i - 1), 38, 18) strDumy = "●" If gPrecisData1(i) = 1I Then mfgr.DrawString(strDumy, Fnt, Brushes.Black, RectF, StrFormat) End If Next i 'オブジェクトの破棄 Fnt.Dispose() mfgr.Dispose() Mf.Dispose() End Sub
|