tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルメタファイルの作成
記事No2997
投稿日: 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  

[ツリー表示へ]