3.線を描いてみる |
今回はVBからイラストレータを操作してパスを描く方法を紹介します。イラストレータでは連続した線分のことををパス(Path)といいます。1本の直線でも、折れ線グラフのような線でもパスです。
また、パスのオブジェクトはパスアイテムパス(PathItem)と言います。
イラストレータで線分を描くには、書類にパスアイテムオブジェクトを追加し、そのオブジェクトに対してパラメータを設定していく、という手順になります。
サンプルプロジェクトをここからダウンロードしてください。
イラストレータの書類のカラーモードには2種類(CMYK/RGB)ありますが、フォームのボタン1ではCMYKで新規書類を作成し、ボタン2ではRGBで作成しています。まずは、ボタン1のソースを見てみましょう。
Private Sub Command1_Click() Dim appRef As New Illustrator.Application 'Illustratorアプリケーション Dim aiDoc As Illustrator.Document 'Illustratorドキュメント Dim lnColor As New Illustrator.Color '色オブジェクト Dim lnCMYKColor As New Illustrator.CMYKColor 'CMYKカラーオブジェクト Dim linePath As Illustrator.PathItem 'パスオブジェクト Set aiDoc = appRef.Documents.Add(aiColorCMYK, 600, 800) '新規ドキュメントを開く lnCMYKColor.Black = 0 'CMYK色成分の設定 lnCMYKColor.Cyan = 100 lnCMYKColor.Magenta = 0 lnCMYKColor.Yellow = 0 lnColor.CMYK = lnCMYKColor 'CMYK=>カラーObj Set linePath = aiDoc.PathItems.Add 'パスObjを追加 linePath.SetEntirePath Array(Array(100, 100), Array(200, 200)) 'パスの頂点座標を登録 linePath.StrokeColor = lnColor 'カラーObj=>線の色へ End Sub |
前回の説明と違い、今回は色んな変数を宣言しています。それぞれの変数の意味はコメントを参照してください。
まず、
Set aiDoc = appRef.Documents.Add(aiColorCMYK, 600, 800)
今回は新規文書に対してパスアイテムを追加していきますので、文書のオブジェクトを保存します。
また、.Add関数の1番目の引数のaiColorCMYKが書類のカラーモードの指定です。カラーモードは他に、aiColorRGBcolorがあります。
イラストレータでは、色を指定するのにColorオブジェクトを使用します。
Dim lnColor As New Illustrator.Color
また、色を指定する際にはColorオブジェクトを直接操作するのではなく、CMYKColorまたはRGBColorオブジェクトの色成分値を操作して、Colorオブジェクトのプロパティにセットする、という方法をとります。CMYKの場合は、
lnCMYKColor.Black = 0 lnCMYKColor.Cyan = 100 lnCMYKColor.Magenta = 0 lnCMYKColor.Yellow = 0
で、CMYKオブジェクトに色成分を設定し、
lnColor.CMYK = lnCMYKColor
で、Colorオブジェクトに適用します。
次に線の描画ですが、イラストレータではPathItemというオブジェクトを操作して線分を描くことになります。新しくパスを作には、現在の文書のPathItemsコレクションにPathItemを追加するという方法になります。
Set linePath = aiDoc.PathItems.Add
パスの属性は、ここで受け取ったlinePathに設定します。
linePath.SetEntirePath Array(Array(100, 100), Array(200, 200))
パスの頂点はSetEntirePathメソッドで行います。ここで注意してもらいたいのは頂点を表わすです。Illustrator Scripting Guide.pdfでPathItemのSetEntirePathメソッドを見てみると、
SetEntirePath(pathSpecification As Variant Array of Variant Array of 2 Singles)
となっています。引数の型は、Variant Array of Variant Array of 2 Singles つまり、2組のSingle型のバリアント型配列(の配列)ということになっていますが、私も最初はここが分かりにくかったので解説します。
まず「2組のSingle型」とは、1つの頂点のX座標、Y座標を表わします。X=100、Y=100なら、(100,100)です。これを束ねて「バリアント型配列」を作ります。
VBではバリアント型配列を返す関数としてArray関数があるので、Array(100, 100)が一つの頂点を表わします。
また、2組の頂点で1本の線を表わすことになります。Array関数はバリアント配列そのものも配列要素に取り入れることができるので、Array(Array(100, 100), Array(200, 200))と書けば2つの頂点の組み合わせ=1本の線 を表わします。
パスアイテムでは複数の線分を組み合せた図形(折れ線)を描画することもできます。その場合、連続した頂点の配列をArray関数で束ねてやればOKです。Array(Array(100, 100), Array(200, 200), Array(300,300), ... )
この例は次のボタン2で扱っています。
最後に、線の色を設定するには前に作ったColorオブジェクトをパスのプロパティにセットします。
linePath.StrokeColor = lnColor
ここでは線の色はStrokeColorプロパティです。
次にボタン2のソースを見てみましょう。
Private Sub Command2_Click() Dim appRef As New Illustrator.Application Dim aiDoc As Illustrator.Document Dim lnColor As New Illustrator.Color Dim lnRGBColor As New Illustrator.RGBColor 'RGBカラーオブジェクト Dim linePath As Illustrator.PathItem Set aiDoc = appRef.Documents.Add(aiColorRGBcolor, 600, 800) lnRGBColor.Blue = 0 'RGB色成分の設定 lnRGBColor.Red = 255 lnRGBColor.Green = 0 lnColor.RGB = lnRGBColor 'RGB=>カラーObj Set linePath = aiDoc.PathItems.Add linePath.SetEntirePath Array(Array(100, 100), Array(200, 200)) linePath.StrokeColor = lnColor Set linePath = appRef.ActiveDocument.PathItems.Add linePath.SetEntirePath Array(Array(100, 300), Array(200, 400), Array(300, 300)) '複合パス linePath.Filled = True '塗りつぶし linePath.FillColor = lnColor End Sub |
lnRGBColor.Blue = 0 lnRGBColor.Red = 255 lnRGBColor.Green = 0 lnColor.RGB = lnRGBColorColorオブジェクトのRGBプロパティにセットします。
linePath.SetEntirePath Array(Array(100, 300), Array(200, 400), Array(300, 300))3つの頂点を指定しているので、2本の線から成るパスが作成されます。
linePath.Filled = True linePath.FillColor = lnColorFilledプロパティをTrueにすると、そのパスは塗りつぶされます。また、塗りつぶしの色はFillColorに設定します。