Mr.Tです、こんにちは。
Ognasさんのエントリ:
http://blogs.wankuma.com/ognac/archive/2007/09/10/95118.aspx
上記のエントリの話は、エスケープシーケンス制御のプリンタに対して、.NETな世界から倍角なFontを発行なんぞ
できるもんか、ということなんでが、じゃあそもそも.NETな世界では倍角ってできないんか、とおもいちょっと作成。
VB.NETで新規プロジェクト作成して、FormにPictureBoxとボタンを一個貼り付け。
Private pSize As Integer = 2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics = PictureBox1.CreateGraphics()
g.Clear(Me.BackColor)
g.ScaleTransform(pSize, 1) '横倍角
pSize += 1
Dim fnt As New Font("MS UI Gothic", 20)
g.DrawString("熊", fnt, Brushes.Black, 0, 0)
fnt.Dispose()
g.Dispose()
End Sub
あら簡単。というか、まあ適当なんで。
ScaleTransform(pSize, 1)のところで、サイズを指定しているわけです。というかこの場合だと、絵として表示しなくちゃ
なりませんね。
で、印刷してみようと思い、更にボタン一つ貼り付け。以下がソース全文。
Imports System.Drawing
Public Class Form1
Private pSize As Integer = 2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim g As Graphics = PictureBox1.CreateGraphics()
g.Clear(Me.BackColor)
g.ScaleTransform(pSize, 1) '横倍角
pSize += 1
Dim fnt As New Font("MS UI Gothic", 20)
g.DrawString("熊", fnt, Brushes.Black, 0, 0)
fnt.Dispose()
g.Dispose()
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim pd As Printing.PrintDocument = New Printing.PrintDocument
AddHandler pd.PrintPage, AddressOf pd_PrintPage
If MessageBox.Show("印刷しちゃうぞ?", "確認", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
pd.Print()
End If
End Sub
Private Sub pd_PrintPage(ByVal sender As Object, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs)
'画像を描画する
Dim fnt As New Font("MS UI Gothic", 20)
e.Graphics.ScaleTransform(pSize, 1) '横倍角
e.Graphics.DrawString("熊", fnt, Brushes.Black, 0, 0)
'次のページがないことを通知する
e.HasMorePages = False
fnt.Dispose()
End Sub
End Class
プリンタに対しても、やっぱり画像描画みたいになるんで、横倍角なFontクラス自体は無理。
レイアウト的に、画像として利用できるような(イラストの一部に利用したいとか)なら、できそうな気もしますが
それ以外の使い道はなさそうな気もします。