Difference between revisions of "JA/Documentation/BASIC Guide/Structure of Drawings"

From Apache OpenOffice Wiki
Jump to: navigation, search
 
(4 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
|ShowPrevNext=block
 
|ShowPrevNext=block
 
|ShowPrevPage=block
 
|ShowPrevPage=block
|PrevPage=Documentation/BASIC Guide/Drawings Presentations
+
|PrevPage=JA/Documentation/BASIC Guide/Drawings Presentations
|NextPage=Documentation/BASIC Guide/Editing Drawing Objects
+
|NextPage=JA/Documentation/BASIC Guide/Editing Drawing Objects
 
|draw=block
 
|draw=block
 
}}
 
}}
{{DISPLAYTITLE:▼\'90\'7d形描画ドキュメントの\'8d\'5c造}}
+
{{DISPLAYTITLE:図形描画ドキュメントの構造}}
 
   
 
   
{{OOo}} ▼ の\'90\'7d形描画ドキュメントには、特にページ数の制限はありません。▼これらの各ページは、それぞれ個別に編集できます。▼またページごとに配置できる\'90\'7d形描画要素の数についても、特に制限はありません。
+
{{OOo}} の図形描画ドキュメントには、特にページ数の制限はありません。これらの各ページは、それぞれ個別に編集できます。またページごとに配置できる図形描画要素の数についても、特に制限はありません。
  
==▼ページ==
+
==ページ==
  
\'90\'7d形描画ドキュメント内のページへのアクセスには、<tt>DrawPages</tt> リストを利用します。▼また個々のページに対しては、番号または名前により指定できます。▼ドキュメント内に '''Slide 1''' という名前のページだけしかない場合、以下の 2 つのサンプルコードは同じ動作を示します。
+
図形描画ドキュメント内のページへのアクセスには、<tt>DrawPages</tt> リストを利用します。また個々のページに対しては、番号または名前により指定できます。ドキュメント内に '''Slide 1''' という名前のページだけしかない場合、次の 2 つのサンプルコードは同じ動作を示します。
  
'''▼例 1:'''
+
'''1:'''
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 24: Line 24:
 
</source>
 
</source>
  
'''▼例 2:'''
+
'''2:'''
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 34: Line 34:
 
</source>
 
</source>
  
上記の例 1 では、ページへのアクセスを番号指定で行なっています (開始値は 0)。▼上記の例 2 では、<tt>getByName</tt> メ\'83\'5cッドを用いた名前によるアクセスを行なっています。
+
上記の例 1 では、ページへのアクセスを番号指定で行なっています (開始値は 0)。上記の例 2 では、<tt>getByName</tt> メソッドを用いた名前によるアクセスを行なっています。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 52: Line 52:
 
</source>
 
</source>
  
上記の呼び出しを実行すると、<tt>com.sun.star.drawing.DrawPage</tt> サービスをサポートしたページオブジェクトが返されます。▼このサービスでは、以下の属性を使用できます。
+
上記の呼び出しを実行すると、<tt>com.sun.star.drawing.DrawPage</tt> サービスをサポートしたページオブジェクトが返されます。このサービスでは、次の属性を使用できます。
  
 
;<tt>BorderLeft (Long)</tt>:100 分の 1 ミリ単位で指定した左側の枠。
 
;<tt>BorderLeft (Long)</tt>:100 分の 1 ミリ単位で指定した左側の枠。
Line 63: Line 63:
 
;<tt>Orientation (Enum)</tt>:ページの向き (<tt>com.sun.star.view.PaperOrientation</tt> に定められた列挙型)。
 
;<tt>Orientation (Enum)</tt>:ページの向き (<tt>com.sun.star.view.PaperOrientation</tt> に定められた列挙型)。
  
▼これらの設定値の変更は、該当ドキュメント内の '''すべて''' のページに適用されます。
+
これらの設定値の変更は、該当ドキュメント内の'''すべて'''のページに適用されます。
  
▼以下のサンプルコードは、新規に開いた\'90\'7d形描画ドキュメントに対して、ページサイズを 20 × 20 センチメートル、ページ余白を 0.5 センチメートルに設定します。
+
次のサンプルコードは、新規に開いた図形描画ドキュメントに対して、ページサイズを 20 × 20 センチメートル、ページ余白を 0.5 センチメートルに設定します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 83: Line 83:
 
</source>
 
</source>
  
==▼\'90\'7d形描画オブジェクトの基\'96\'7b属性==
+
==図形描画オブジェクトの基本属性==
  
▼\'90\'7d形描画オブジェクトには、\'90\'7d形 (四角形や円など)、線、テキストなどのオブジェクトが該当します。▼これらのオブジェクトは <tt>com.sun.star.drawing.Shape サービスをサポートしており、多数の機\'94\'5cが共通しています。</tt>▼たとえば\'90\'7d形描画オブジェクトの <tt>Size</tt> や <tt>Position</tt> 属性は、このサービスに定義されています。
+
図形描画オブジェクトには、図形 (四角形や円など)、線、テキストなどのオブジェクトが該当します。これらのオブジェクトは <tt>com.sun.star.drawing.Shape</tt> サービスをサポートしており、多数の機能が共通しています。たとえば図形描画オブジェクトの <tt>Size</tt> や <tt>Position</tt> 属性は、このサービスに定義されています。
  
 +
なお書式設定や塗りつぶしなど、位置やサイズ以外の属性の変更については、{{OOo}} Basic に用意されているその他の各種サービスを利用します。どのような書式設定オプションが利用できるかは、図形描画オブジェクトの種類によって異なります。
  
                    なお書式設定や塗りつぶしなど、位置やサイズ以外の属性の変更については、{{OOo}} Basic に用意されているその他の各種サービスを利用します。▼どのような書式設定オプションが利用できるかは、\'90\'7d形描画オブジェクトの種類によって異なります。
+
次のサンプルコードでは、四角形を作成して、図形描画ドキュメント上に挿入します。
 
+
▼以下のサンプルコードでは、四角形を作成して、\'90\'7d形描画ドキュメント上に\'91\'7d入します。
+
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 116: Line 115:
 
このサンプルコードでは、オープンするドキュメントの指定に <tt>StarDesktop.CurrentComponent</tt> を使用しています。このようにして指定されたドキュメントオブジェクトに対しては、<tt>drawPages(0)</tt> を実行することで、その最初のページを取得できます。
 
このサンプルコードでは、オープンするドキュメントの指定に <tt>StarDesktop.CurrentComponent</tt> を使用しています。このようにして指定されたドキュメントオブジェクトに対しては、<tt>drawPages(0)</tt> を実行することで、その最初のページを取得できます。
  
次に <tt>Point</tt> および <tt>Size</tt> という構造体を使って、図形描画オブジェクトの表示位置 (左上隅) とサイズを指定しています。▼これらの値は、100 分の 1 ミリ単位で指定します。
+
次に <tt>Point</tt> および <tt>Size</tt> という構造体を使って、図形描画オブジェクトの表示位置 (左上隅) とサイズを指定しています。これらの値は、100 分の 1 ミリ単位で指定します。
  
その次にくる <tt>Doc.createInstance</tt> のコード行では、<idl>com.sun.star.drawing.RectangleShape</idl> サービスを指定することで、四角形の図形描画オブジェクトを作成しています。▼最後に実行する <tt>Page.add</tt> のコード行では、作成した\'90\'7d形描画オブジェクトをページ上に\'91\'7d入しています。
+
その次にくる <tt>Doc.createInstance</tt> のコード行では、<idl>com.sun.star.drawing.RectangleShape</idl> サービスを指定することで、四角形の図形描画オブジェクトを作成しています。最後に実行する <tt>Page.add</tt> のコード行では、作成した図形描画オブジェクトをページ上に挿入しています。
  
===▼塗りつぶし属性===
+
===塗りつぶし属性===
  
 
この節では 4 つのサービスに付いて説明し、四角形オブジェクトに対して各種の書式設定を行うサンプルコードを紹介します。塗りつぶし関係の属性は、<idl>com.sun.star.drawing.FillProperties</idl> サービスで扱われます。
 
この節では 4 つのサービスに付いて説明し、四角形オブジェクトに対して各種の書式設定を行うサンプルコードを紹介します。塗りつぶし関係の属性は、<idl>com.sun.star.drawing.FillProperties</idl> サービスで扱われます。
  
{{OOo}} で行う塗りつぶしに関しては、大きく分けて 4 種類の書式設定が存在します。▼最も単純なものは、単一色による塗りつぶしです。▼その他に、複数の色を組み合わせたグラデーションおよびハッチングのオプションもあります。▼そして第 4 のタイプとして、既存の画像を塗りつぶし領域にはめ込むというオプションも使用できます。
+
{{OOo}} で行う塗りつぶしに関しては、大きく分けて 4 種類の書式設定が存在します。最も単純なものは、単一色による塗りつぶしです。その他に、複数の色を組み合わせたグラデーションおよびハッチングのオプションもあります。そして第 4 のタイプとして、既存の画像を塗りつぶし領域にはめ込むというオプションも使用できます。
  
 
図形描画オブジェクトの塗りつぶしモードは、<tt>FillStyle</tt> 属性で指定します。指定可能な値は、<idl>com.sun.star.drawing.FillStyle</idl> に定義されています。
 
図形描画オブジェクトの塗りつぶしモードは、<tt>FillStyle</tt> 属性で指定します。指定可能な値は、<idl>com.sun.star.drawing.FillStyle</idl> に定義されています。
  
===▼単一色による塗りつぶし===
+
===単一色による塗りつぶし===
  
単一色による塗りつぶしを行う場合、主として以下の属性を使用します。
+
単一色による塗りつぶしを行う場合、主として次の属性を使用します。
  
 
;<tt>FillColor (Long)</tt>:領域の塗りつぶし。
 
;<tt>FillColor (Long)</tt>:領域の塗りつぶし。
Line 136: Line 135:
 
この塗りつぶしモードを使用するには、<tt>FillStyle</tt> 属性を <tt>SOLID</tt> に設定しておく必要があります。
 
この塗りつぶしモードを使用するには、<tt>FillStyle</tt> 属性を <tt>SOLID</tt> に設定しておく必要があります。
  
▼以下のサンプルコードでは、四角形オブジェクトを作成して、赤の単一色 (RGB 値: 255、0、0) で塗りつぶします。
+
次のサンプルコードでは、四角形オブジェクトを作成して、赤の単一色 (RGB 値: 255、0、0) で塗りつぶします。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 163: Line 162:
 
</source>
 
</source>
  
===▼色のグラデーション===
+
===色のグラデーション===
  
 
<tt>FillStyle</tt> 属性に <tt>GRADIENT</tt> を設定すると、{{OOo}} ドキュメント上の塗りつぶし領域に対して、色のグラデーションを施すことができます。
 
<tt>FillStyle</tt> 属性に <tt>GRADIENT</tt> を設定すると、{{OOo}} ドキュメント上の塗りつぶし領域に対して、色のグラデーションを施すことができます。
  
事前定義されたグラデーションを適用する場合は、<tt>FillTransparenceGradientName</tt> 属性に該当するグラデーション名を指定します。グラデーションを定義する場合は、<idl>com.sun.star.awt.Gradient</idl> 構造体の形で必要な設定を指定して、<tt>FillGradient</tt> 属性に渡します。▼この属性には、以下のオプションを使用できます。
+
事前定義されたグラデーションを適用する場合は、<tt>FillTransparenceGradientName</tt> 属性に該当するグラデーション名を指定します。グラデーションを定義する場合は、<idl>com.sun.star.awt.Gradient</idl> 構造体の形で必要な設定を指定して、<tt>FillGradient</tt> 属性に渡します。この属性には、次のオプションを使用できます。
  
 
;<tt>Style (Enum)</tt>:線形や放射線状などのグラデーションの種類の指定 (<idl>com.sun.star.awt.GradientStyle</idl> に定められたデフォルト値)。
 
;<tt>Style (Enum)</tt>:線形や放射線状などのグラデーションの種類の指定 (<idl>com.sun.star.awt.GradientStyle</idl> に定められたデフォルト値)。
Line 177: Line 176:
 
;<tt>StartIntensity (Short)</tt>:パーセント単位で指定した <tt>StartColor</tt> の強度 ({{OOo}} Basic では 100 パーセント以上の値も指定可能)。
 
;<tt>StartIntensity (Short)</tt>:パーセント単位で指定した <tt>StartColor</tt> の強度 ({{OOo}} Basic では 100 パーセント以上の値も指定可能)。
 
;<tt>EndIntensity (Short)</tt>:パーセント単位で指定した <tt>EndColor</tt> の強度 ({{OOo}} Basic では 100 パーセント以上の値も指定可能)。
 
;<tt>EndIntensity (Short)</tt>:パーセント単位で指定した <tt>EndColor</tt> の強度 ({{OOo}} Basic では 100 パーセント以上の値も指定可能)。
<tt>StepCount (Short)</tt>:{{OOo}} に計算させるグラデーションのステップ数。
+
;<tt>StepCount (Short)</tt>:{{OOo}} に計算させるグラデーションのステップ数。
  
以下のサンプルコードでは、<idl>com.sun.star.awt.Gradient</idl>構造体を用いてグラデーションを施す方法を示します。
+
次のサンプルコードでは、<idl>com.sun.star.awt.Gradient</idl> 構造体を用いてグラデーションを施す方法を示します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 214: Line 213:
 
</source>
 
</source>
  
このサンプルコードでは、線形のグラデーションを施しています (<tt>Style = LINEAR</tt>)。グラデーションは開始色 (<tt>StartColor</tt>) を赤、終了色 (<tt>Angle</tt>) を緑として、角度 (<tt>EndColor</tt>) を 45 度にしています。▼開始色と終了色の強度 (<tt>StartIntensity</tt> および <tt>EndIntensity</tt>) はともに 150 パーセントとしてあるので、<tt>StartColor </tt><tt> 属性の指定色よりも明るく\'95\'5c示されます。EndColor</tt>グラデーションする色のステップ数は 100 段階としてあります (<tt>StepCount</tt>)。
+
このサンプルコードでは、線形のグラデーションを施しています (<tt>Style = LINEAR</tt>)。グラデーションは開始色 (<tt>StartColor</tt>) を赤、終了色 (<tt>EndColor</tt>) を緑として、角度 (<tt>Angle</tt>) を 45 度にしています。開始色と終了色の強度 (<tt>StartIntensity</tt> および <tt>EndIntensity</tt>) はともに 150 パーセントとしてあるので、<tt>StartColor</tt> <tt>EndColor</tt> 属性の指定色よりも明るく表示されます。グラデーションする色のステップ数は 100 段階としてあります (<tt>StepCount</tt>)。
  
===▼ハッチング===
+
===ハッチング===
  
塗りつぶしにハッチングを施す場合は、<tt>FillStyle</tt> 属性を <tt>HATCH</tt> に設定しておく必要があります。▼ハッチング用のプログラムコードは、グラデーションの場合とよく似た手順を取ります。ここでは、ハッチングの模様を指定するのに <idl>com.sun.star.drawing.Hatch</idl> 構造体を使用します。▼こうしたハッチング用の\'8d\'5c造体には、以下の属性を指定できます。
+
塗りつぶしにハッチングを施す場合は、<tt>FillStyle</tt> 属性を <tt>HATCH</tt> に設定しておく必要があります。ハッチング用のプログラムコードは、グラデーションの場合とよく似た手順を取ります。ここでは、ハッチングの模様を指定するのに <idl>com.sun.star.drawing.Hatch</idl> 構造体を使用します。こうしたハッチング用の構造体には、次の属性を指定できます。
  
 
;<tt>Style (Enum)</tt>:横線、横縦線、横縦斜線などのハッチングの種類の指定 (<tt>com.sun.star.awt.HatchStyle</tt> に定められたデフォルト値)。
 
;<tt>Style (Enum)</tt>:横線、横縦線、横縦斜線などのハッチングの種類の指定 (<tt>com.sun.star.awt.HatchStyle</tt> に定められたデフォルト値)。
Line 225: Line 224:
 
;<tt>Angle (Short)</tt>:10 分の 1 度単位で指定したハッチングの角度。
 
;<tt>Angle (Short)</tt>:10 分の 1 度単位で指定したハッチングの角度。
  
▼以下のサンプルコードは、ハッチング指定用の\'8d\'5c造体の使用法を示します。
+
次のサンプルコードは、ハッチング指定用の構造体の使用法を示します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 259: Line 258:
 
</source>
 
</source>
  
このサンプルコードでは、線の種類を横線 (<tt>HatchStyle = SINGLE</tt>) にして、ハッチングの角度 (<tt>Angle</tt>) を 45 度にしています。▼また線の\'95\'5c示色 (<tt>Color</tt>) は灰色、線の間隔 (<tt>Distance</tt>) は 0.2 ミリメートルとしています。
+
このサンプルコードでは、線の種類を横線 (<tt>HatchStyle = SINGLE</tt>) にして、ハッチングの角度 (<tt>Angle</tt>) を 45 度にしています。また線の表示色 (<tt>Color</tt>) は灰色、線の間隔 (<tt>Distance</tt>) は 0.2 ミリメートルとしています。
  
 
=== ビットマップ ===
 
=== ビットマップ ===
Line 265: Line 264:
 
ビットマップによるプロジェクションを行うには、<tt>FillStyle</tt> 属性に <tt>BITMAP</tt> を指定する必要があります。必要なビットマップが {{OOo}} 上にすでに配置されているのであれば、<tt>FillBitMapName</tt> 属性にその名前を指定し、<tt>FillBitmapMode</tt> 属性に表示スタイル (シンプル、繰り返し、拡大) を指定します (<idl>com.sun.star.drawing.BitmapMode</idl> に定められたデフォルト値)。
 
ビットマップによるプロジェクションを行うには、<tt>FillStyle</tt> 属性に <tt>BITMAP</tt> を指定する必要があります。必要なビットマップが {{OOo}} 上にすでに配置されているのであれば、<tt>FillBitMapName</tt> 属性にその名前を指定し、<tt>FillBitmapMode</tt> 属性に表示スタイル (シンプル、繰り返し、拡大) を指定します (<idl>com.sun.star.drawing.BitmapMode</idl> に定められたデフォルト値)。
  
外部のビット\'83\'7dップファイルを使用する場合は、その URL を <tt>FillBitmapURL</tt> 属性に指定します。
+
外部のビットマップファイルを使用する場合は、その URL を <tt>FillBitmapURL</tt> 属性に指定します。
  
以下のサンプルコードでは、四角形を描画して、{{OOo}} に用意されている Sky というビットマップで、その中を埋めています。
+
次のサンプルコードでは、四角形を描画して、{{OOo}} に用意されている Sky というビットマップで、その中を埋めています。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 297: Line 296:
 
=== 透過性あり ===
 
=== 透過性あり ===
  
塗りつぶしをする際には、その透過性を指定できます。▼最も簡単な指定法は、<tt>FillTransparence</tt> 属性を利用することです。
+
塗りつぶしをする際には、その透過性を指定できます。最も簡単な指定法は、<tt>FillTransparence</tt> 属性を利用することです。
  
▼以下のサンプルコードでは、赤色の四角形を描画し、その透過性を 50 パーセントに設定しています。
+
次のサンプルコードでは、赤色の四角形を描画し、その透過性を 50 パーセントに設定しています。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 329: Line 328:
 
<tt>FillTransparence</tt> 属性の値を 100 とすると、塗りつぶしは完全な透明になります。
 
<tt>FillTransparence</tt> 属性の値を 100 とすると、塗りつぶしは完全な透明になります。
  
<idl>com.sun.star.drawing.FillProperties</idl> サービスには、<tt>FillTransparence</tt> 属性以外にも <tt>FillTransparenceGradient</tt> という属性が用意されています。▼この属性は、塗りつぶし領域のグラデーション指定に使用します。
+
<idl>com.sun.star.drawing.FillProperties</idl> サービスには、<tt>FillTransparence</tt> 属性以外にも <tt>FillTransparenceGradient</tt> という属性が用意されています。この属性は、塗りつぶし領域のグラデーション指定に使用します。
  
===▼線の属性===
+
===線の属性===
  
外枠の線を表示可能なすべてのオブジェクトは、<idl>com.sun.star.drawing.LineStyle</idl> サービスをサポートしています。▼このサービスに用意されている代\'95\'5c的な属性としては、以下のものがあります。
+
外枠の線を表示可能なすべてのオブジェクトは、<idl>com.sun.star.drawing.LineStyle</idl> サービスをサポートしています。このサービスに用意されている代表的な属性としては、次のものがあります。
  
 
;<tt>LineStyle (Enum)</tt>:線の種類 (<idl>com.sun.star.drawing.LineStyle</idl> に定められたデフォルト値)。
 
;<tt>LineStyle (Enum)</tt>:線の種類 (<idl>com.sun.star.drawing.LineStyle</idl> に定められたデフォルト値)。
Line 341: Line 340:
 
;<tt>LineJoint (Enum)</tt>:接続点への遷移 (<idl>com.sun.star.drawing.LineJoint</idl> に定められたデフォルト値)。
 
;<tt>LineJoint (Enum)</tt>:接続点への遷移 (<idl>com.sun.star.drawing.LineJoint</idl> に定められたデフォルト値)。
  
以下のサンプルコードは外枠付きの四角形を描画するもので、線の種類を実線 (<tt>LineStyle = SOLID</tt>)、線の幅 (<tt>LineWidth</tt>) を 5 ミリメートルとし、線の透過性を 50 パーセントとしています。▼外枠線の頂点の形状は、直角にするように指定しています (<tt>LineJoint = MITER</tt>)。
+
次のサンプルコードは外枠付きの四角形を描画するもので、線の種類を実線 (<tt>LineStyle = SOLID</tt>)、線の幅 (<tt>LineWidth</tt>) を 5 ミリメートルとし、線の透過性を 50 パーセントとしています。外枠線の頂点の形状は、直角にするように指定しています (<tt>LineJoint = MITER</tt>)。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 372: Line 371:
 
</source>
 
</source>
  
<idl>com.sun.star.drawing.LineStyle</idl> サービスには、上記に一覧した属性以外にも、点線や破線を描画するためのオプションが用意されています。▼詳細情報については、{{OOo}} の『API reference』を参照してください。
+
<idl>com.sun.star.drawing.LineStyle</idl> サービスには、上記に一覧した属性以外にも、点線や破線を描画するためのオプションが用意されています。詳細情報については、{{OOo}} の『API reference』を参照してください。
  
===▼テキスト属性 (\'90\'7d形描画オブジェクト)===
+
===テキスト属性 (図形描画オブジェクト)===
  
 
<idl>com.sun.star.style.CharacterProperties</idl> サービスおよび <idl>com.sun.star.style.ParagraphProperties</idl> サービスでは、図形描画オブジェクト内でテキストを書式設定できます。これらのサービスは、個々の文字や段落に関する指定を行うものですが、詳細については「[[JA/Documentation/BASIC Guide/Text Documents|文書ドキュメント]]」で説明しています。
 
<idl>com.sun.star.style.CharacterProperties</idl> サービスおよび <idl>com.sun.star.style.ParagraphProperties</idl> サービスでは、図形描画オブジェクト内でテキストを書式設定できます。これらのサービスは、個々の文字や段落に関する指定を行うものですが、詳細については「[[JA/Documentation/BASIC Guide/Text Documents|文書ドキュメント]]」で説明しています。
  
以下のサンプルコードでは、描画した四角形にテキストを挿入し、<idl>com.sun.star.style.CharacterProperties</idl> サービスを用いたフォントの書式指定を行なっています。
+
次のサンプルコードでは、描画した四角形にテキストを挿入し、<idl>com.sun.star.style.CharacterProperties</idl> サービスを用いたフォントの書式指定を行なっています。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 406: Line 405:
 
上記のサンプルコードでは、四角形オブジェクトの <tt>String</tt> 属性を用いて表示テキストを指定してから、このテキストの書式設定を <idl>com.sun.star.style.CharacterProperties</idl> サービスの <tt>CharWeight</tt> および <tt>CharFontName</tt> 属性を利用して行なっています。
 
上記のサンプルコードでは、四角形オブジェクトの <tt>String</tt> 属性を用いて表示テキストを指定してから、このテキストの書式設定を <idl>com.sun.star.style.CharacterProperties</idl> サービスの <tt>CharWeight</tt> および <tt>CharFontName</tt> 属性を利用して行なっています。
  
▼オブジェクト中へテキストを\'91\'7d入するには、\'90\'7d形描画ページ上に該当するオブジェクトを事前に追加しておく必要があります。図形描画オブジェクト内でのテキストの表示位置と書式に関しては、<idl>com.sun.star.drawing.Text</idl> サービスも利用できます。▼このサービスに用意されている代\'95\'5c的な属性としては、以下のものがあります。
+
オブジェクト中へテキストを挿入するには、図形描画ページ上に該当するオブジェクトを事前に追加しておく必要があります。図形描画オブジェクト内でのテキストの表示位置と書式に関しては、<idl>com.sun.star.drawing.Text</idl> サービスも利用できます。このサービスに用意されている代表的な属性としては、次のものがあります。
  
 
;<tt>TextAutoGrowHeight (Boolean)</tt>:図形描画要素の高さを、その中の表示テキストに合わせる指定。
 
;<tt>TextAutoGrowHeight (Boolean)</tt>:図形描画要素の高さを、その中の表示テキストに合わせる指定。
Line 417: Line 416:
 
;<tt>TextLowerDistance (Long)</tt>:100 分の 1 ミリ単位で指定した、図形描画要素の下端からテキストまでの間隔。
 
;<tt>TextLowerDistance (Long)</tt>:100 分の 1 ミリ単位で指定した、図形描画要素の下端からテキストまでの間隔。
  
▼以下のサンプルコードは、これらの属性の使用例です。
+
次のサンプルコードは、これらの属性の使用例です。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 451: Line 450:
 
</source>
 
</source>
  
このサンプルコードでは、ページ上に図形描画要素を挿入してからテキストを挿入し、このテキストの配置位置を <tt>TextVerticalAdjust</tt> および <tt>TextHorizontalAdjust</tt> 属性を用いて、図形描画オブジェクトの左上隅に設定しています。▼また\'90\'7d形描画要素の外形線からテキストまでの間隔は、3 ミリメートルとしています。
+
このサンプルコードでは、ページ上に図形描画要素を挿入してからテキストを挿入し、このテキストの配置位置を <tt>TextVerticalAdjust</tt> および <tt>TextHorizontalAdjust</tt> 属性を用いて、図形描画オブジェクトの左上隅に設定しています。また図形描画要素の外形線からテキストまでの間隔は、3 ミリメートルとしています。
  
===▼影の属性===
+
===影の属性===
  
<idl>com.sun.star.drawing.ShadowProperties</idl> サービスを使用して、ほとんどの図形描画オブジェクトに影を追加できます。 ▼このサービスでは、以下の属性を利用できます。
+
<idl>com.sun.star.drawing.ShadowProperties</idl> サービスを使用して、ほとんどの図形描画オブジェクトに影を追加できます。このサービスでは、次の属性を利用できます。
  
 
;<tt>Shadow (Boolean)</tt>:影を有効化する指定。
 
;<tt>Shadow (Boolean)</tt>:影を有効化する指定。
Line 463: Line 462:
 
;<tt>ShadowYDistance (Long)</tt>:100 分の 1 ミリ単位で指定した、影と図形描画オブジェクトの水平方向の間隔。
 
;<tt>ShadowYDistance (Long)</tt>:100 分の 1 ミリ単位で指定した、影と図形描画オブジェクトの水平方向の間隔。
  
▼以下のサンプルコードでは、四角形のオブジェクトを作成し、水平および垂直方向のオフセットを 2 ミリメートルとした影を\'95\'5c示します。▼影の色は灰色、透過性は 50 パーセントとしています。
+
次のサンプルコードでは、四角形のオブジェクトを作成し、水平および垂直方向のオフセットを 2 ミリメートルとした影を表示します。影の色は灰色、透過性は 50 パーセントとしています。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 493: Line 492:
 
</source>
 
</source>
  
==▼各種の\'90\'7d形描画オブジェクトの概要==
+
==各種の図形描画オブジェクトの概要==
  
===▼四角形オブジェクト===
+
===四角形オブジェクト===
  
四角形オブジェクト (<idl>com.sun.star.drawing.RectangleShape</idl>) は、書式設定オブジェクトの以下のサービスをサポートしています。
+
四角形オブジェクト (<idl>com.sun.star.drawing.RectangleShape</idl>) は、書式設定オブジェクトの次のサービスをサポートしています。
  
 
;<tt>Fill properties</tt>:<idl>com.sun.star.drawing.FillProperties</idl>
 
;<tt>Fill properties</tt>:<idl>com.sun.star.drawing.FillProperties</idl>
 
;<tt>Line properties</tt>:<idl>com.sun.star.drawing.LineProperties</idl>
 
;<tt>Line properties</tt>:<idl>com.sun.star.drawing.LineProperties</idl>
;<tt>Text properties</tt>:<idl>com.sun.star.drawing.Text</idl> (with <idl>com.sun.star.style.CharacterProperties</idl> および <idl>com.sun.star.style.ParagraphProperties</idl>)
+
;<tt>Text properties</tt>:<idl>com.sun.star.drawing.Text</idl> (<idl>com.sun.star.style.CharacterProperties</idl> および <idl>com.sun.star.style.ParagraphProperties</idl> も含む)
 
;<tt>Shadow properties</tt>:<idl>com.sun.star.drawing.ShadowProperties</idl>
 
;<tt>Shadow properties</tt>:<idl>com.sun.star.drawing.ShadowProperties</idl>
 
;<tt>CornerRadius (Long)</tt>:100 分の 1 ミリ単位で指定した、角の丸みの半径。
 
;<tt>CornerRadius (Long)</tt>:100 分の 1 ミリ単位で指定した、角の丸みの半径。
  
===▼円および楕円オブジェクト===
+
===円および楕円オブジェクト===
  
<idl>com.sun.star.drawing.EllipseShape</idl> サービスは、円および楕円の表示関係の処理を行うもので、以下のサービスをサポートしています。
+
<idl>com.sun.star.drawing.EllipseShape</idl> サービスは、円および楕円の表示関係の処理を行うもので、次のサービスをサポートしています。
  
 
;<tt>Fill properties</tt>:<idl>com.sun.star.drawing.FillProperties</idl>
 
;<tt>Fill properties</tt>:<idl>com.sun.star.drawing.FillProperties</idl>
 
;<tt>Line properties</tt>:<idl>com.sun.star.drawing.LineProperties</idl>
 
;<tt>Line properties</tt>:<idl>com.sun.star.drawing.LineProperties</idl>
;<tt>Text properties</tt>:<idl>com.sun.star.drawing.Text</idl> (with <idl>com.sun.star.style.CharacterProperties</idl> および <idl>com.sun.star.style.ParagraphProperties</idl>)
+
;<tt>Text properties</tt>:<idl>com.sun.star.drawing.Text</idl> (<idl>com.sun.star.style.CharacterProperties</idl> および <idl>com.sun.star.style.ParagraphProperties</idl> も含む)
 
;<tt>Shadow properties</tt>:<idl>com.sun.star.drawing.ShadowProperties</idl>
 
;<tt>Shadow properties</tt>:<idl>com.sun.star.drawing.ShadowProperties</idl>
  
▼円と楕円オブジェクトには、これらの他に以下の 3 つの属性が用意されています。
+
円と楕円オブジェクトには、これらの他に次の 3 つの属性が用意されています。
  
<tt>CircleKind (Enum)</tt>:円または楕円の種類の指定 (<idl>com.sun.star.drawing.CircleKind</idl> に定められたデフォルト値)。
+
;<tt>CircleKind (Enum)</tt>:円または楕円の種類の指定 (<idl>com.sun.star.drawing.CircleKind</idl> に定められたデフォルト値)。
 
;<tt>CircleStartAngle (Long)</tt>:10 分の 1 度単位で指定した、切片の開始角 (円および楕円形の切片の描画のみで有効)。
 
;<tt>CircleStartAngle (Long)</tt>:10 分の 1 度単位で指定した、切片の開始角 (円および楕円形の切片の描画のみで有効)。
 
;<tt>CircleEndAngle (Long)</tt>:10 分の 1 度単位で指定した、切片の終了角 (円および楕円形の切片の描画のみで有効)。
 
;<tt>CircleEndAngle (Long)</tt>:10 分の 1 度単位で指定した、切片の終了角 (円および楕円形の切片の描画のみで有効)。
  
<tt>CircleKind</tt> 属性は、円全体を描画するか、あるいは切片や円弧として描画するかを指定します。▼指定可\'94\'5cな定数値は以下のものです。
+
<tt>CircleKind</tt> 属性は、円全体を描画するか、あるいは切片や円弧として描画するかを指定します。指定可能な定数値は次のものです。
  
 
;<idl>com.sun.star.drawing.CircleKind.FULL</idl>:円または楕円。
 
;<idl>com.sun.star.drawing.CircleKind.FULL</idl>:円または楕円。
Line 527: Line 526:
 
;<idl>com.sun.star.drawing.CircleKind.ARC</idl>:角度 (円の線は含まない)。
 
;<idl>com.sun.star.drawing.CircleKind.ARC</idl>:角度 (円の線は含まない)。
  
▼以下のサンプルコードは、中心角 70 度の扇型を描画します (開始角を 20 度、終了角 90 度に設定)。
+
次のサンプルコードは、中心角 70 度の扇型を描画します (開始角を 20 度、終了角 90 度に設定)。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 557: Line 556:
 
=== 線 ===
 
=== 線 ===
  
{{OOo}} では、線のオブジェクトに対する <idl>com.sun.star.drawing.LineShape</idl> サービスが用意されています。▼線オブジェクトは、\'95\'5c面関係の指定を除いた、基\'96\'7b的な\'95\'5c示指定サービスをすべてサポートしています。▼<tt>LineShape</tt> サービスで利用する属性は以下のものです。
+
{{OOo}} では、線のオブジェクトに対する <idl>com.sun.star.drawing.LineShape</idl> サービスが用意されています。線オブジェクトは、表面関係の指定を除いた、基本的な表示指定サービスをすべてサポートしています。<tt>LineShape</tt> サービスで利用する属性は次のものです。
  
 
;<tt>Line properties</tt>:<idl>com.sun.star.drawing.LineProperties</idl>
 
;<tt>Line properties</tt>:<idl>com.sun.star.drawing.LineProperties</idl>
;<tt>Text properties</tt>:<idl>com.sun.star.drawing.Text</idl> (with <idl>com.sun.star.style.CharacterProperties</idl> および <idl>com.sun.star.style.ParagraphProperties</idl>)
+
;<tt>Text properties</tt>:<idl>com.sun.star.drawing.Text</idl> (<idl>com.sun.star.style.CharacterProperties</idl> および <idl>com.sun.star.style.ParagraphProperties</idl> も含む)
 
;<tt>Shadow properties</tt>:<idl>com.sun.star.drawing.ShadowProperties</idl>
 
;<tt>Shadow properties</tt>:<idl>com.sun.star.drawing.ShadowProperties</idl>
  
▼以下のサンプルコードでは、線オブジェクトを作成し、上記の属性を用いて各種の\'95\'5c示を設定します。▼なお線の始点は <tt>Location</tt> 属性で指定しますが、終点は <tt>Size</tt> 属性の座標による間接的に指定します。
+
次のサンプルコードでは、線オブジェクトを作成し、上記の属性を用いて各種の表示を設定します。なお線の始点は <tt>Location</tt> 属性で指定しますが、終点は <tt>Size</tt> 属性の座標による間接的に指定します。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 587: Line 586:
 
</source>
 
</source>
  
===▼多角形オブジェクト===
+
===多角形オブジェクト===
  
{{OOo}} は、<idl>com.sun.star.drawing.PolyPolygonShape</idl> サービスを使用した複雑な多角形オブジェクトもサポートしています。▼ただし正確には、ここでの PolyPolygon は単純な多角形ではなく、複合多角形を意味します。▼そのため、1 つのオブジェクト全体は、個々の頂点を指定する各種のリストから\'8d\'5c成されます。
+
{{OOo}} は、<idl>com.sun.star.drawing.PolyPolygonShape</idl> サービスを使用した複雑な多角形オブジェクトもサポートしています。ただし正確には、ここでの PolyPolygon は単純な多角形ではなく、複合多角形を意味します。そのため、1 つのオブジェクト全体は、個々の頂点を指定する各種のリストから構成されます。
  
▼多角形オブジェクトに対しても、四角形同様の\'95\'5c示設定属性が各種用意されています。
+
多角形オブジェクトに対しても、四角形同様の表示設定属性が各種用意されています。
  
 
;<tt>Fill properties</tt>:<idl>com.sun.star.drawing.FillProperties</idl>
 
;<tt>Fill properties</tt>:<idl>com.sun.star.drawing.FillProperties</idl>
 
;<tt>Line properties</tt>:<idl>com.sun.star.drawing.LineProperties</idl>
 
;<tt>Line properties</tt>:<idl>com.sun.star.drawing.LineProperties</idl>
;<tt>Text properties</tt>:<idl>com.sun.star.drawing.Text</idl> (with <idl>com.sun.star.style.CharacterProperties</idl> および <idl>com.sun.star.style.ParagraphProperties</idl>)
+
;<tt>Text properties</tt>:<idl>com.sun.star.drawing.Text</idl> (<idl>com.sun.star.style.CharacterProperties</idl> および <idl>com.sun.star.style.ParagraphProperties</idl> も含む)
 
;<tt>Shadow properties</tt>:<idl>com.sun.star.drawing.ShadowProperties</idl>
 
;<tt>Shadow properties</tt>:<idl>com.sun.star.drawing.ShadowProperties</idl>
  
また <tt>PolyPolygonShape</tt> サービスには、多角形の座標指定用に、以下の属性も用意されています。
+
また <tt>PolyPolygonShape</tt> サービスには、多角形の座標指定用に、次の属性も用意されています。
  
* <tt>PolyPolygon (Array)</tt>:多角形の座標を指定するフィールド (<idl>com.sun.star.awt.Point</idl> タイプのデータを格納する配列)
+
* <tt>PolyPolygon (Array)</tt> 多角形の座標を指定するフィールド (<idl>com.sun.star.awt.Point</idl> タイプのデータを格納する配列)
  
以下のサンプルコードは、<tt>PolyPolygonShape</tt> サービスを用いて三角形を描画する方法の一例です。
+
次のサンプルコードは、<tt>PolyPolygonShape</tt> サービスを用いて三角形を描画する方法の一例です。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 627: Line 626:
 
</source>
 
</source>
  
▼ここでの多角形は、個々の頂点を絶対座標により指定するため、多角形のサイズや\'95\'5c示位置などの指定は不要です。▼その代わりここでは、頂点の座標データを収めた配列を用意して、これを第 2 の配列に変換 (<tt>())Array(Coordinates() による処理) してから、多角形の頂点指定用属性に代入しています。</tt>▼なお多角形への頂点指定を行う前には、多角形オブジェクトをドキュメント上に\'91\'7d入しておく必要があります。
+
ここでの多角形は、個々の頂点を絶対座標により指定するため、多角形のサイズや表示位置などの指定は不要です。その代わりここでは、頂点の座標データを収めた配列を用意して、これを第 2 の配列に変換 (<tt>Array(Coordinates()</tt> による処理) してから、多角形の頂点指定用属性に代入しています。なお多角形への頂点指定を行う前には、多角形オブジェクトをドキュメント上に挿入しておく必要があります。
  
▼頂点指定用の配列を利用することで、複数の多角形を組み合わせた\'90\'7d形を\'8d\'5c築できます。▼たとえば、四角形の中に別の四角形を\'91\'7d入することで、穴の空いた四角形を描画できます。
+
頂点指定用の配列を利用することで、複数の多角形を組み合わせた図形を構築できます。たとえば、四角形の中に別の四角形を挿入することで、穴の空いた四角形を描画できます。
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 677: Line 676:
 
</source>
 
</source>
  
このような操作を行う場合、どの領域が残り、どの領域が消去されるかが問題となりますが、{{OOo}} では「外部のオブジェクトの縁が多角形の外周部となる」という規則に従って処理されます。▼同様に、内側の縁は多角形の内周部となるので、こうした部分に穴が空くことになります。▼更に内側にくる縁がある場合は、そこから塗りつぶされた領域の描画が再開されます。
+
このような操作を行う場合、どの領域が残り、どの領域が消去されるかが問題となりますが、{{OOo}} では「外部のオブジェクトの縁が多角形の外周部となる」という規則に従って処理されます。同様に、内側の縁は多角形の内周部となるので、こうした部分に穴が空くことになります。更に内側にくる縁がある場合は、そこから塗りつぶされた領域の描画が再開されます。
  
===▼\'90\'7dオブジェクト===
+
===図オブジェクト===
  
最後に説明する図形描画要素は図オブジェクトです。これは <idl>com.sun.star.drawing.GraphicObjectShape</idl> サービスを利用します。▼このサービスは、{{OOo}} のすべての画像に対して利用可\'94\'5cで、各種の属性を通じて画像の\'95\'5c示に関する設定を行います。
+
最後に説明する図形描画要素は図オブジェクトです。これは <idl>com.sun.star.drawing.GraphicObjectShape</idl> サービスを利用します。このサービスは、{{OOo}} のすべての画像に対して利用可能で、各種の属性を通じて画像の表示に関する設定を行います。
  
▼\'90\'7dオブジェクトは、以下の 2 つの\'95\'5c示設定用属性をサポートしています。
+
図オブジェクトは、次の 2 つの表示設定用属性をサポートしています。
  
;<tt>Text properties</tt>:<idl>com.sun.star.drawing.Text</idl> (with <idl>com.sun.star.style.CharacterProperties</idl> および <idl>com.sun.star.style.ParagraphProperties</idl>)
+
;<tt>Text properties</tt>:<idl>com.sun.star.drawing.Text</idl> (<idl>com.sun.star.style.CharacterProperties</idl> および <idl>com.sun.star.style.ParagraphProperties</idl> も含む)
 
;<tt>Shadow properties</tt>:<idl>com.sun.star.drawing.ShadowProperties</idl>
 
;<tt>Shadow properties</tt>:<idl>com.sun.star.drawing.ShadowProperties</idl>
  
▼\'90\'7dオブジェクトのサポートするその他の属性には、以下のものがあります。
+
図オブジェクトのサポートするその他の属性には、次のものがあります。
  
 
;<tt>GraphicURL (String)</tt>:図の URL。
 
;<tt>GraphicURL (String)</tt>:図の URL。
<tt>AdjustLuminance (Short)</tt>:パーセント単位で指定した、色の輝度 (負の値も指定可能)。
+
;<tt>AdjustLuminance (Short)</tt>: パーセント単位で指定した、色の輝度 (負の値も指定可能)。
 
;<tt>AdjustContrast (Short)</tt>:パーセント単位で指定した、色のコントラスト (負の値も指定可能)。
 
;<tt>AdjustContrast (Short)</tt>:パーセント単位で指定した、色のコントラスト (負の値も指定可能)。
 
;<tt>AdjustRed (Short)</tt>:パーセント単位で指定した、色の赤成分 (負の値も指定可能)。
 
;<tt>AdjustRed (Short)</tt>:パーセント単位で指定した、色の赤成分 (負の値も指定可能)。
Line 700: Line 699:
 
;<tt>GraphicColorMode (enum)</tt>:標準、グレースケール、白黒などのカラーモード (<idl>com.sun.star.drawing.ColorMode</idl> に定められたデフォルト値)。
 
;<tt>GraphicColorMode (enum)</tt>:標準、グレースケール、白黒などのカラーモード (<idl>com.sun.star.drawing.ColorMode</idl> に定められたデフォルト値)。
  
▼以下のサンプルコードは、ページへの\'90\'7dオブジェクトの\'91\'7d入法の例です。Dim Doc As Object
+
次のサンプルコードは、ページへの図オブジェクトの挿入法の例です。Dim Doc As Object
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 735: Line 734:
  
 
上記のサンプルコードでは、<tt>test.jpg</tt> というファイル名の画像を挿入して、その表示設定を <tt>Adjust</tt> 関係の属性により行なっています。またここでは、画像の透過性を 40 パーセントとし、カラーモードは標準のままとしています (<tt>GraphicColorMode = STANDARD</tt>)。
 
上記のサンプルコードでは、<tt>test.jpg</tt> というファイル名の画像を挿入して、その表示設定を <tt>Adjust</tt> 関係の属性により行なっています。またここでは、画像の透過性を 40 パーセントとし、カラーモードは標準のままとしています (<tt>GraphicColorMode = STANDARD</tt>)。
 +
  
 
{{PDL1}}
 
{{PDL1}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Structure of Drawings}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Structure of Drawings}}

Latest revision as of 16:48, 15 December 2008

doc OOo
Book.png


Apache OpenOffice の図形描画ドキュメントには、特にページ数の制限はありません。これらの各ページは、それぞれ個別に編集できます。またページごとに配置できる図形描画要素の数についても、特に制限はありません。

ページ

図形描画ドキュメント内のページへのアクセスには、DrawPages リストを利用します。また個々のページに対しては、番号または名前により指定できます。ドキュメント内に Slide 1 という名前のページだけしかない場合、次の 2 つのサンプルコードは同じ動作を示します。

例 1:

Dim Doc As Object
Dim Page As Object
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)

例 2:

Dim Doc As Object
Dim Page As Object
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages.getByName("Slide 1")

上記の例 1 では、ページへのアクセスを番号指定で行なっています (開始値は 0)。上記の例 2 では、getByName メソッドを用いた名前によるアクセスを行なっています。

Dim sUrl As String, sFilter As String
Dim sOptions As String
Dim oSheets As Object, oSheet As Object
 
   oSheets = oDocument.Sheets
 
   If oSheets.hasByName("Link") Then
      oSheet = oSheets.getByName("Link")
   Else
      oSheet = oDocument.createInstance("com.sun.star.sheet.Spreadsheet")
      oSheets.insertByName("Link", oSheet)
      oSheet.IsVisible = False
   End If

上記の呼び出しを実行すると、com.sun.star.drawing.DrawPage サービスをサポートしたページオブジェクトが返されます。このサービスでは、次の属性を使用できます。

BorderLeft (Long)
100 分の 1 ミリ単位で指定した左側の枠。
BorderRight (Long)
100 分の 1 ミリ単位で指定した右側の枠。
BorderTop (Long)
100 分の 1 ミリ単位で指定した上側の枠。
BorderBottom (Long)
100 分の 1 ミリ単位で指定した下側の枠。
Width (Long)
100 分の 1 ミリ単位で指定したページ幅。
Height (Long)
100 分の 1 ミリ単位で指定したページの高さ。
Number (Short)
ページ数 (開始値は 1) 読み取り専用。
Orientation (Enum)
ページの向き (com.sun.star.view.PaperOrientation に定められた列挙型)。

これらの設定値の変更は、該当ドキュメント内のすべてのページに適用されます。

次のサンプルコードは、新規に開いた図形描画ドキュメントに対して、ページサイズを 20 × 20 センチメートル、ページ余白を 0.5 センチメートルに設定します。

Dim Doc As Object
Dim Page As Object
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
Page.BorderLeft = 500
Page.BorderRight = 500
Page.BorderTop = 500
Page.BorderBottom = 500
 
Page.Width = 20000
Page.Height = 20000

図形描画オブジェクトの基本属性

図形描画オブジェクトには、図形 (四角形や円など)、線、テキストなどのオブジェクトが該当します。これらのオブジェクトは com.sun.star.drawing.Shape サービスをサポートしており、多数の機能が共通しています。たとえば図形描画オブジェクトの SizePosition 属性は、このサービスに定義されています。

なお書式設定や塗りつぶしなど、位置やサイズ以外の属性の変更については、Apache OpenOffice Basic に用意されているその他の各種サービスを利用します。どのような書式設定オプションが利用できるかは、図形描画オブジェクトの種類によって異なります。

次のサンプルコードでは、四角形を作成して、図形描画ドキュメント上に挿入します。

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
Page.add(RectangleShape)

このサンプルコードでは、オープンするドキュメントの指定に StarDesktop.CurrentComponent を使用しています。このようにして指定されたドキュメントオブジェクトに対しては、drawPages(0) を実行することで、その最初のページを取得できます。

次に Point および Size という構造体を使って、図形描画オブジェクトの表示位置 (左上隅) とサイズを指定しています。これらの値は、100 分の 1 ミリ単位で指定します。

その次にくる Doc.createInstance のコード行では、com.sun.star.drawing.RectangleShape サービスを指定することで、四角形の図形描画オブジェクトを作成しています。最後に実行する Page.add のコード行では、作成した図形描画オブジェクトをページ上に挿入しています。

塗りつぶし属性

この節では 4 つのサービスに付いて説明し、四角形オブジェクトに対して各種の書式設定を行うサンプルコードを紹介します。塗りつぶし関係の属性は、com.sun.star.drawing.FillProperties サービスで扱われます。

Apache OpenOffice で行う塗りつぶしに関しては、大きく分けて 4 種類の書式設定が存在します。最も単純なものは、単一色による塗りつぶしです。その他に、複数の色を組み合わせたグラデーションおよびハッチングのオプションもあります。そして第 4 のタイプとして、既存の画像を塗りつぶし領域にはめ込むというオプションも使用できます。

図形描画オブジェクトの塗りつぶしモードは、FillStyle 属性で指定します。指定可能な値は、com.sun.star.drawing.FillStyle に定義されています。

単一色による塗りつぶし

単一色による塗りつぶしを行う場合、主として次の属性を使用します。

FillColor (Long)
領域の塗りつぶし。

この塗りつぶしモードを使用するには、FillStyle 属性を SOLID に設定しておく必要があります。

次のサンプルコードでは、四角形オブジェクトを作成して、赤の単一色 (RGB 値: 255、0、0) で塗りつぶします。

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.SOLID
RectangleShape.FillColor = RGB(255,0,0)
 
Page.add(RectangleShape)

色のグラデーション

FillStyle 属性に GRADIENT を設定すると、Apache OpenOffice ドキュメント上の塗りつぶし領域に対して、色のグラデーションを施すことができます。

事前定義されたグラデーションを適用する場合は、FillTransparenceGradientName 属性に該当するグラデーション名を指定します。グラデーションを定義する場合は、com.sun.star.awt.Gradient 構造体の形で必要な設定を指定して、FillGradient 属性に渡します。この属性には、次のオプションを使用できます。

Style (Enum)
線形や放射線状などのグラデーションの種類の指定 (com.sun.star.awt.GradientStyle に定められたデフォルト値)。
StartColor (Long)
グラデーションの開始色。
EndColor (Long)
グラデーションの開始色。
Angle (Short)
10 分の 1 度単位で指定したグラデーションの角度。
XOffset (Short)
100 分の 1 ミリ単位で指定した、グラデーション開始点の X 座標。
YOffset (Short)
100 分の 1 ミリ単位で指定した、グラデーション開始点の Y 座標。
StartIntensity (Short)
パーセント単位で指定した StartColor の強度 (Apache OpenOffice Basic では 100 パーセント以上の値も指定可能)。
EndIntensity (Short)
パーセント単位で指定した EndColor の強度 (Apache OpenOffice Basic では 100 パーセント以上の値も指定可能)。
StepCount (Short)
Apache OpenOffice に計算させるグラデーションのステップ数。

次のサンプルコードでは、com.sun.star.awt.Gradient 構造体を用いてグラデーションを施す方法を示します。

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Dim Gradient As New com.sun.star.awt.Gradient 
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
Gradient.Style = com.sun.star.awt.GradientStyle.LINEAR
Gradient.StartColor = RGB(255,0,0)
Gradient.EndColor = RGB(0,255,0)
Gradient.StartIntensity = 150   
Gradient.EndIntensity = 150
Gradient.Angle = 450
Gradient.StepCount = 100
 
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.GRADIENT
RectangleShape.FillGradient = Gradient
 
Page.add(RectangleShape)

このサンプルコードでは、線形のグラデーションを施しています (Style = LINEAR)。グラデーションは開始色 (StartColor) を赤、終了色 (EndColor) を緑として、角度 (Angle) を 45 度にしています。開始色と終了色の強度 (StartIntensity および EndIntensity) はともに 150 パーセントとしてあるので、StartColorEndColor 属性の指定色よりも明るく表示されます。グラデーションする色のステップ数は 100 段階としてあります (StepCount)。

ハッチング

塗りつぶしにハッチングを施す場合は、FillStyle 属性を HATCH に設定しておく必要があります。ハッチング用のプログラムコードは、グラデーションの場合とよく似た手順を取ります。ここでは、ハッチングの模様を指定するのに com.sun.star.drawing.Hatch 構造体を使用します。こうしたハッチング用の構造体には、次の属性を指定できます。

Style (Enum)
横線、横縦線、横縦斜線などのハッチングの種類の指定 (com.sun.star.awt.HatchStyle に定められたデフォルト値)。
Color (Long)
線の色。
Distance (Long)
100 分の 1 ミリ単位で指定した、線の間隔。
Angle (Short)
10 分の 1 度単位で指定したハッチングの角度。

次のサンプルコードは、ハッチング指定用の構造体の使用法を示します。

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Dim Hatch As New com.sun.star.drawing.Hatch
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.HATCH
 
Hatch.Style = com.sun.star.drawing.HatchStyle.SINGLE
Hatch.Color = RGB(64,64,64)
Hatch.Distance = 20
Hatch.Angle = 450
 
RectangleShape.FillHatch = Hatch
 
Page.add(RectangleShape)

このサンプルコードでは、線の種類を横線 (HatchStyle = SINGLE) にして、ハッチングの角度 (Angle) を 45 度にしています。また線の表示色 (Color) は灰色、線の間隔 (Distance) は 0.2 ミリメートルとしています。

ビットマップ

ビットマップによるプロジェクションを行うには、FillStyle 属性に BITMAP を指定する必要があります。必要なビットマップが Apache OpenOffice 上にすでに配置されているのであれば、FillBitMapName 属性にその名前を指定し、FillBitmapMode 属性に表示スタイル (シンプル、繰り返し、拡大) を指定します (com.sun.star.drawing.BitmapMode に定められたデフォルト値)。

外部のビットマップファイルを使用する場合は、その URL を FillBitmapURL 属性に指定します。

次のサンプルコードでは、四角形を描画して、Apache OpenOffice に用意されている Sky というビットマップで、その中を埋めています。

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.BITMAP
RectangleShape.FillBitmapName = "Sky"
RectangleShape.FillBitmapMode = com.sun.star.drawing.BitmapMode.REPEAT
 
Page.add(RectangleShape)

透過性あり

塗りつぶしをする際には、その透過性を指定できます。最も簡単な指定法は、FillTransparence 属性を利用することです。

次のサンプルコードでは、赤色の四角形を描画し、その透過性を 50 パーセントに設定しています。

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.FillStyle = com.sun.star.drawing.FillStyle.SOLID
RectangleShape.FillTransparence = 50
RectangleShape.FillColor = RGB(255,0,0)
 
Page.add(RectangleShape)

FillTransparence 属性の値を 100 とすると、塗りつぶしは完全な透明になります。

com.sun.star.drawing.FillProperties サービスには、FillTransparence 属性以外にも FillTransparenceGradient という属性が用意されています。この属性は、塗りつぶし領域のグラデーション指定に使用します。

線の属性

外枠の線を表示可能なすべてのオブジェクトは、com.sun.star.drawing.LineStyle サービスをサポートしています。このサービスに用意されている代表的な属性としては、次のものがあります。

LineStyle (Enum)
線の種類 (com.sun.star.drawing.LineStyle に定められたデフォルト値)。
LineColor (Long)
線の色。
LineTransparence (Short)
線の透過性。
LineWidth (Long)
100 分の 1 ミリ単位で指定した線の太さ。
LineJoint (Enum)
接続点への遷移 (com.sun.star.drawing.LineJoint に定められたデフォルト値)。

次のサンプルコードは外枠付きの四角形を描画するもので、線の種類を実線 (LineStyle = SOLID)、線の幅 (LineWidth) を 5 ミリメートルとし、線の透過性を 50 パーセントとしています。外枠線の頂点の形状は、直角にするように指定しています (LineJoint = MITER)。

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.LineColor = RGB(128,128,128)
RectangleShape.LineTransparence = 50
RectangleShape.LineWidth = 500
RectangleShape.LineJoint = com.sun.star.drawing.LineJoint.MITER   
 
RectangleShape.LineStyle = com.sun.star.drawing.LineStyle.SOLID
 
Page.add(RectangleShape)

com.sun.star.drawing.LineStyle サービスには、上記に一覧した属性以外にも、点線や破線を描画するためのオプションが用意されています。詳細情報については、Apache OpenOffice の『API reference』を参照してください。

テキスト属性 (図形描画オブジェクト)

com.sun.star.style.CharacterProperties サービスおよび com.sun.star.style.ParagraphProperties サービスでは、図形描画オブジェクト内でテキストを書式設定できます。これらのサービスは、個々の文字や段落に関する指定を行うものですが、詳細については「文書ドキュメント」で説明しています。

次のサンプルコードでは、描画した四角形にテキストを挿入し、com.sun.star.style.CharacterProperties サービスを用いたフォントの書式指定を行なっています。

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
Page.add(RectangleShape)
 
RectangleShape.String = "This is a test"
RectangleShape.CharWeight = com.sun.star.awt.FontWeight.BOLD
RectangleShape.CharFontName = "Arial"

上記のサンプルコードでは、四角形オブジェクトの String 属性を用いて表示テキストを指定してから、このテキストの書式設定を com.sun.star.style.CharacterProperties サービスの CharWeight および CharFontName 属性を利用して行なっています。

オブジェクト中へテキストを挿入するには、図形描画ページ上に該当するオブジェクトを事前に追加しておく必要があります。図形描画オブジェクト内でのテキストの表示位置と書式に関しては、com.sun.star.drawing.Text サービスも利用できます。このサービスに用意されている代表的な属性としては、次のものがあります。

TextAutoGrowHeight (Boolean)
図形描画要素の高さを、その中の表示テキストに合わせる指定。
TextAutoGrowWidth (Boolean)
図形描画要素の幅を、その中の表示テキストに合わせる指定。
TextHorizontalAdjust (Enum)
図形描画要素内のテキストの水平位置の指定 (com.sun.star.drawing.TextHorizontalAdjust に定められたデフォルト値)。
TextVerticalAdjust (Enum)
図形描画要素内のテキストの垂直位置の指定 (com.sun.star.drawing.TextVerticalAdjust に定められたデフォルト値)。
TextLeftDistance (Long)
100 分の 1 ミリ単位で指定した、図形描画要素の左端からテキストまでの間隔。
TextRightDistance (Long)
100 分の 1 ミリ単位で指定した、図形描画要素の右端からテキストまでの間隔。
TextUpperDistance (Long)
100 分の 1 ミリ単位で指定した、図形描画要素の上端からテキストまでの間隔。
TextLowerDistance (Long)
100 分の 1 ミリ単位で指定した、図形描画要素の下端からテキストまでの間隔。

次のサンプルコードは、これらの属性の使用例です。

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
Page.add(RectangleShape)
 
RectangleShape.String = "This is a test"   ' May only take place after Page.add!
 
RectangleShape.TextVerticalAdjust = com.sun.star.drawing.TextVerticalAdjust.TOP
RectangleShape.TextHorizontalAdjust = com.sun.star.drawing.TextHorizontalAdjust.LEFT
 
RectangleShape.TextLeftDistance = 300
RectangleShape.TextRightDistance = 300
RectangleShape.TextUpperDistance = 300
RectangleShape.TextLowerDistance = 300

このサンプルコードでは、ページ上に図形描画要素を挿入してからテキストを挿入し、このテキストの配置位置を TextVerticalAdjust および TextHorizontalAdjust 属性を用いて、図形描画オブジェクトの左上隅に設定しています。また図形描画要素の外形線からテキストまでの間隔は、3 ミリメートルとしています。

影の属性

com.sun.star.drawing.ShadowProperties サービスを使用して、ほとんどの図形描画オブジェクトに影を追加できます。このサービスでは、次の属性を利用できます。

Shadow (Boolean)
影を有効化する指定。
ShadowColor (Long)
影の色。
ShadowTransparence (Short)
影を透明にする指定。
ShadowXDistance (Long)
100 分の 1 ミリ単位で指定した、影と図形描画オブジェクトの垂直方向の間隔。
ShadowYDistance (Long)
100 分の 1 ミリ単位で指定した、影と図形描画オブジェクトの水平方向の間隔。

次のサンプルコードでは、四角形のオブジェクトを作成し、水平および垂直方向のオフセットを 2 ミリメートルとした影を表示します。影の色は灰色、透過性は 50 パーセントとしています。

Dim Doc As Object
Dim Page As Object
Dim RectangleShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
RectangleShape = Doc.createInstance("com.sun.star.drawing.RectangleShape")
RectangleShape.Size = Size
RectangleShape.Position = Point
 
RectangleShape.Shadow = True
RectangleShape.ShadowColor = RGB(192,192,192)
RectangleShape.ShadowTransparence = 50
RectangleShape.ShadowXDistance = 200 
RectangleShape.ShadowYDistance = 200
 
Page.add(RectangleShape)

各種の図形描画オブジェクトの概要

四角形オブジェクト

四角形オブジェクト (com.sun.star.drawing.RectangleShape) は、書式設定オブジェクトの次のサービスをサポートしています。

Fill properties
com.sun.star.drawing.FillProperties
Line properties
com.sun.star.drawing.LineProperties
Text properties
com.sun.star.drawing.Text (com.sun.star.style.CharacterProperties および com.sun.star.style.ParagraphProperties も含む)
Shadow properties
com.sun.star.drawing.ShadowProperties
CornerRadius (Long)
100 分の 1 ミリ単位で指定した、角の丸みの半径。

円および楕円オブジェクト

com.sun.star.drawing.EllipseShape サービスは、円および楕円の表示関係の処理を行うもので、次のサービスをサポートしています。

Fill properties
com.sun.star.drawing.FillProperties
Line properties
com.sun.star.drawing.LineProperties
Text properties
com.sun.star.drawing.Text (com.sun.star.style.CharacterProperties および com.sun.star.style.ParagraphProperties も含む)
Shadow properties
com.sun.star.drawing.ShadowProperties

円と楕円オブジェクトには、これらの他に次の 3 つの属性が用意されています。

CircleKind (Enum)
円または楕円の種類の指定 (com.sun.star.drawing.CircleKind に定められたデフォルト値)。
CircleStartAngle (Long)
10 分の 1 度単位で指定した、切片の開始角 (円および楕円形の切片の描画のみで有効)。
CircleEndAngle (Long)
10 分の 1 度単位で指定した、切片の終了角 (円および楕円形の切片の描画のみで有効)。

CircleKind 属性は、円全体を描画するか、あるいは切片や円弧として描画するかを指定します。指定可能な定数値は次のものです。

com.sun.star.drawing.CircleKind.FULL
円または楕円。
com.sun.star.drawing.CircleKind.CUT
円の切片 (円弧の両端を直線で結んだ図形)。
com.sun.star.drawing.CircleKind.SECTION
円の断面。
com.sun.star.drawing.CircleKind.ARC
角度 (円の線は含まない)。

次のサンプルコードは、中心角 70 度の扇型を描画します (開始角を 20 度、終了角 90 度に設定)。

Dim Doc As Object
Dim Page As Object
Dim EllipseShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
EllipseShape = Doc.createInstance("com.sun.star.drawing.EllipseShape")
EllipseShape.Size = Size
EllipseShape.Position = Point
 
EllipseShape.CircleStartAngle = 2000
EllipseShape.CircleEndAngle = 9000
EllipseShape.CircleKind =  com.sun.star.drawing.CircleKind.SECTION
 
Page.add(EllipseShape)

Apache OpenOffice では、線のオブジェクトに対する com.sun.star.drawing.LineShape サービスが用意されています。線オブジェクトは、表面関係の指定を除いた、基本的な表示指定サービスをすべてサポートしています。LineShape サービスで利用する属性は次のものです。

Line properties
com.sun.star.drawing.LineProperties
Text properties
com.sun.star.drawing.Text (com.sun.star.style.CharacterProperties および com.sun.star.style.ParagraphProperties も含む)
Shadow properties
com.sun.star.drawing.ShadowProperties

次のサンプルコードでは、線オブジェクトを作成し、上記の属性を用いて各種の表示を設定します。なお線の始点は Location 属性で指定しますが、終点は Size 属性の座標による間接的に指定します。

Dim Doc As Object
Dim Page As Object
Dim LineShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
LineShape = Doc.createInstance("com.sun.star.drawing.LineShape")
LineShape.Size = Size
LineShape.Position = Point
 
Page.add(LineShape)

多角形オブジェクト

Apache OpenOffice は、com.sun.star.drawing.PolyPolygonShape サービスを使用した複雑な多角形オブジェクトもサポートしています。ただし正確には、ここでの PolyPolygon は単純な多角形ではなく、複合多角形を意味します。そのため、1 つのオブジェクト全体は、個々の頂点を指定する各種のリストから構成されます。

多角形オブジェクトに対しても、四角形同様の表示設定属性が各種用意されています。

Fill properties
com.sun.star.drawing.FillProperties
Line properties
com.sun.star.drawing.LineProperties
Text properties
com.sun.star.drawing.Text (com.sun.star.style.CharacterProperties および com.sun.star.style.ParagraphProperties も含む)
Shadow properties
com.sun.star.drawing.ShadowProperties

また PolyPolygonShape サービスには、多角形の座標指定用に、次の属性も用意されています。

  • PolyPolygon (Array) – 多角形の座標を指定するフィールド (com.sun.star.awt.Point タイプのデータを格納する配列)

次のサンプルコードは、PolyPolygonShape サービスを用いて三角形を描画する方法の一例です。

Dim Doc As Object
Dim Page As Object
Dim PolyPolygonShape As Object
Dim PolyPolygon As Variant
Dim Coordinates(2) As New com.sun.star.awt.Point
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
PolyPolygonShape = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape")
Page.add(PolyPolygonShape)   ' Page.add must take place before the coordinates are set
 
Coordinates(0).x = 1000
Coordinates(1).x = 7500
Coordinates(2).x = 10000
Coordinates(0).y = 1000
Coordinates(1).y = 7500
Coordinates(2).y = 5000
 
PolyPolygonShape.PolyPolygon = Array(Coordinates())

ここでの多角形は、個々の頂点を絶対座標により指定するため、多角形のサイズや表示位置などの指定は不要です。その代わりここでは、頂点の座標データを収めた配列を用意して、これを第 2 の配列に変換 (Array(Coordinates() による処理) してから、多角形の頂点指定用属性に代入しています。なお多角形への頂点指定を行う前には、多角形オブジェクトをドキュメント上に挿入しておく必要があります。

頂点指定用の配列を利用することで、複数の多角形を組み合わせた図形を構築できます。たとえば、四角形の中に別の四角形を挿入することで、穴の空いた四角形を描画できます。

Dim Doc As Object
Dim Page As Object
Dim PolyPolygonShape As Object
Dim PolyPolygon As Variant
Dim Square1(3) As New com.sun.star.awt.Point
Dim Square2(3) As New com.sun.star.awt.Point
Dim Square3(3) As New com.sun.star.awt.Point
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
PolyPolygonShape = Doc.createInstance("com.sun.star.drawing.PolyPolygonShape")
 
Page.add(PolyPolygonShape)   ' Page.add must take place before the coordinates are set
 
Square1(0).x = 5000
Square1(1).x = 10000
Square1(2).x = 10000
Square1(3).x = 5000
Square1(0).y = 5000
Square1(1).y = 5000
Square1(2).y = 10000
Square1(3).y = 10000
 
Square2(0).x = 6500
Square2(1).x = 8500
Square2(2).x = 8500
Square2(3).x = 6500
Square2(0).y = 6500
Square2(1).y = 6500
Square2(2).y = 8500
Square2(3).y = 8500
 
Square3(0).x = 6500
Square3(1).x = 8500
Square3(2).x = 8500
Square3(3).x = 6500
Square3(0).y = 9000
Square3(1).y = 9000
Square3(2).y = 9500
Square3(3).y = 9500
 
PolyPolygonShape.PolyPolygon = Array(Square1(), Square2(), Square3())

このような操作を行う場合、どの領域が残り、どの領域が消去されるかが問題となりますが、Apache OpenOffice では「外部のオブジェクトの縁が多角形の外周部となる」という規則に従って処理されます。同様に、内側の縁は多角形の内周部となるので、こうした部分に穴が空くことになります。更に内側にくる縁がある場合は、そこから塗りつぶされた領域の描画が再開されます。

図オブジェクト

最後に説明する図形描画要素は図オブジェクトです。これは com.sun.star.drawing.GraphicObjectShape サービスを利用します。このサービスは、Apache OpenOffice のすべての画像に対して利用可能で、各種の属性を通じて画像の表示に関する設定を行います。

図オブジェクトは、次の 2 つの表示設定用属性をサポートしています。

Text properties
com.sun.star.drawing.Text (com.sun.star.style.CharacterProperties および com.sun.star.style.ParagraphProperties も含む)
Shadow properties
com.sun.star.drawing.ShadowProperties

図オブジェクトのサポートするその他の属性には、次のものがあります。

GraphicURL (String)
図の URL。
AdjustLuminance (Short)
パーセント単位で指定した、色の輝度 (負の値も指定可能)。
AdjustContrast (Short)
パーセント単位で指定した、色のコントラスト (負の値も指定可能)。
AdjustRed (Short)
パーセント単位で指定した、色の赤成分 (負の値も指定可能)。
AdjustGreen (Short)
パーセント単位で指定した、色の緑成分 (負の値も指定可能)。
AdjustBlue (Short)
パーセント単位で指定した、色の青成分 (負の値も指定可能)。
Gamma (Short)
図のガンマ値。
Transparency (Short)
パーセント単位で指定した図の透過性。
GraphicColorMode (enum)
標準、グレースケール、白黒などのカラーモード (com.sun.star.drawing.ColorMode に定められたデフォルト値)。

次のサンプルコードは、ページへの図オブジェクトの挿入法の例です。Dim Doc As Object

Dim Page As Object
Dim GraphicObjectShape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size
 
Point.x = 1000         ' specifications, insignificant because latter
                       coordinates are binding
Point.y = 1000
Size.Width = 10000
Size.Height = 10000
 
Doc = StarDesktop.CurrentComponent
Page = Doc.drawPages(0)
 
GraphicObjectShape = Doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
 
GraphicObjectShape.Size = Size
GraphicObjectShape.Position = Point
 
GraphicObjectShape.GraphicURL = "file:///c:/test.jpg"
GraphicObjectShape.AdjustBlue = -50
GraphicObjectShape.AdjustGreen = 5
GraphicObjectShape.AdjustBlue = 10
GraphicObjectShape.AdjustContrast = 20
GraphicObjectShape.AdjustLuminance = 50
GraphicObjectShape.Transparency = 40
GraphicObjectShape.GraphicColorMode = com.sun.star.drawing.ColorMode.STANDARD
 
Page.add(GraphicObjectShape)

上記のサンプルコードでは、test.jpg というファイル名の画像を挿入して、その表示設定を Adjust 関係の属性により行なっています。またここでは、画像の透過性を 40 パーセントとし、カラーモードは標準のままとしています (GraphicColorMode = STANDARD)。


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools