- 題名: 文字の描画
- 日時: 2013/02/03 13:48:37
- ID: 31303
- この記事の返信元:
- (なし)
- この記事への返信:
- [31304] Re[1]: 文字の描画2013/02/03 22:52:34
- ツリーを表示
■No31305に返信(まりもんさんの記事)
実際の使い方によりますが
以下のようにTranslateするのは駄目ですか?
Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim stringFormat As New StringFormat()
Dim DrawRect As New Rectangle(0, 0, 80, 80)
Dim DrawFont As New Font("Meiryo UI", 12)
Dim g As Graphics = e.Graphics
stringFormat.Alignment = StringAlignment.Near
stringFormat.LineAlignment = StringAlignment.Near
g.DrawString("ボタン0", DrawFont, _
New SolidBrush(Me.ForeColor), DrawRect, stringFormat)
g.TranslateTransform(0, 100)
g.DrawString("ボタン0", DrawFont, _
New SolidBrush(Me.ForeColor), DrawRect, stringFormat)
g.ResetTransform()
End Sub
ご返答ありがとうございます。
ただ、実現したいことが、2か所に同じ文字を描画することではないためTranslateでは
回避できないと思います。
私のサンプルと説明が悪い為、伝わりにくい部分があったと思います。
サンプルでは、比較の為に2か所に文字を描画しました。
実現したいことは、サンプルの上に描画した文字と同じ描画をImageに描画したいのです。
また、いろいろ実験した結果、以下のことが分かりました。
g = Graphics.FromImage(ImageA)
g.FillRectangle(New SolidBrush(Me.BackColor), DrawRect)
g.DrawString("ボタン0", DrawFont, _
New SolidBrush(Me.ForeColor), DrawRect, stringFormat)
とテキストの描画前に、塗りつぶしを実行すると、同一に描画されました。
ただ、Color.Transparentで塗りつぶしても効果はありませんでした。
分類:[.NET]
2013/02/03(Sun) 19:24:45 編集(投稿者) 2013/02/03(Sun) 19:24:40 編集(投稿者) 2013/02/03(Sun) 19:24:07 編集(投稿者) 文字の描画で悩んでいます。 下記のソースで描画した時、 自分では、ImageAは伸縮も行われず、見た目は同じになるのではないかと 考えているのですが、フォントによっては描画される文字の見た目が違うのです。 (メイリオで描画した時、ImageAのほうは、太字になったように見えます) e.Graphicsとgをイミディエイトウインドウにて確認しましたが、 DPI等は同じでした。 同じように見えるよう描画するには、どうしたらいいのでしょうか? −−−−−−−−−−−−−以下ソース−−−−−−−−−−−−− Private Sub Form1_Paint(ByVal sender As Object, _ ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint Dim stringFormat As New StringFormat() Dim ImageA As New Bitmap(80, 80) Dim g As Graphics Dim DrawRect As New Rectangle(0, 0, 80, 80) Dim DrawFont As New Font("Meiryo UI", 12) stringFormat.Alignment = StringAlignment.Near stringFormat.LineAlignment = StringAlignment.Near e.Graphics.DrawString("ボタン0", DrawFont, _ New SolidBrush(Me.ForeColor), DrawRect, stringFormat) g = Graphics.FromImage(ImageA) g.DrawString("ボタン0", DrawFont, _ New SolidBrush(Me.ForeColor), DrawRect, stringFormat) e.Graphics.DrawImage(ImageA, 0, 100) g.Dispose() End Sub