4.文字を描いてみる |
今回はVBからイラストレータで文字を描く方法です。単純な文字を描くのはパス同様、いたって簡単です。
文字オブジェクトはテキストアート(TextArt)と言い、このオブジェクトを操作することで文字を描けます。
まずはサンプルプロジェクトをここからダウンロードしてください。
今回のサンプルでは、プログラム開始時(FormLoad時)に空ドキュメントを作成し、前回説明したColorオブジェクトも作成していますので、その部分についてはサンプルのソースをご覧ください。
では、文字描画の解説です。まず、ボタン1ではシンプルな文字を作成しています。
Private Sub Command1_Click() Dim textArt As Illustrator.TextArtItem 'テキストアート Set textArt = aiDoc.TextArtItems.Add 'TextArtItemを追加 textArt.Contents = Text1.Text 'テキストの内容 textArt.TextRange.Filled = True '塗りつぶし textArt.TextRange.FillColor = lnColor '色 textArt.TextRange.Stroked = False '輪郭 textArt.TextRange.Font = "MS-PMincho" 'フォント名 textArt.TextRange.Size = 24 'サイズ textArt.Position = Array(100, 100) 'テキストの座標(左上角を指定) ' textArt.Width = 100 End Sub |
文字はテキストアートを通して操作します。
Dim textArt As Illustrator.TextArtItem
ドキュメントにAddするのはパスと同じですね。テキストの内容は、Contentsに入れます。ここで注意が必要なのはフォント名です。
フォント名は日本語フォントであっても英語名で表記しなければいけません。英語名を知るには実際にイラストレータ上で文字を描いてみて、文字のプロパティから知ることができます。
方法は、まずイラストレータで適当な文字を描き、その文字のフォント設定で知りたいフォントします。次にメニューの「編集」->「環境設定」の「キー入力・オートトレース」のページで、「フォント名を英語表記」にします。
これで、文字設定ウインドウにフォント名が英語表記されますが、VBで使用する場合は、スペースの部分を-(ハイフン)に置換しなければなりません。例えば、「MS PMincho」なら「MS-PMincho」です。
これで、普通に文字を描くことができます。
さて、ここで問題ですが、書類上に表などを作るためにある一定幅の文字列を作りたい場合どうすればいいでしょうか?
それを試みたのが、
' textArt.Width = 100
です。一度コメントを外して試してみてください。
そう、このままでは文字列の幅を調整できるもの、一つ一つの文字まで引き伸ばされてしまうのです。
これは、イラストレータ上の文字ツールで1クリックの後文字を入力し、それを引き伸ばした時と同じ結果となります。
場合によってはこれでもいいのですが、表などの体裁を整えるのには向きません。そこで、イラストレータのテキストボックス(書類上でクリックした後ドラッグすると青い枠が現れる)の状態で文字を入力して、文字揃えを設定するようなやり方がベストです。この状態だと、右揃えやセンタリング、両端を揃えて均等に割りつけるといったこともできます。
VBでこの機能を使うにはテキストアートのKindプロパティにaiAreaTextをセットすることになります。が、単に上記の例に設定するだけでは上手くいきません。ボタン2のコードを見てください。
Private Sub Command2_Click() Dim textArt As Illustrator.TextArtItem Dim prag As Illustrator.Paragraph 'パラグラフオブジェクト Set textArt = aiDoc.TextArtItems.Add textArt.Contents = "dummy" 'ダミー文字列 textArt.Kind = aiAreaText 'テキストのタイプ textArt.TextRange.Paragraphs.RemoveAll 'パラグラフを削除 Set prag = textArt.TextRange.Paragraphs.Add 'パラグラフを追加 prag.Contents = String(LenB(Text1), "*") '日本語対応 prag.Justification = aiAllLines '両端揃え prag.Filled = True prag.FillColor = lnColor prag.Stroked = False prag.Font = "MS-PMincho" prag.Size = 24 prag.Contents = Text1 'パラグラフの内容 textArt.Width = 100 '全体の幅 textArt.TextRange.Scaling = Array(100, 100) 'スケーリング textArt.Position = Array(100, 200) End Sub |