▼\'90\'7d形描画ドキュメントの\'8d\'5c造

From Apache OpenOffice Wiki
< JA‎ | Documentation/BASIC Guide
Revision as of 02:10, 13 November 2008 by G11nAutomation (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
doc OOo
Book.png


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

▼ページ

\'90\'7d形描画ドキュメント内のページへのアクセスには、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 メ\'83\'5cッドを用いた名前によるアクセスを行なっています。

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 に定められた列挙型)。

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

▼以下のサンプルコードは、新規に開いた\'90\'7d形描画ドキュメントに対して、ページサイズを 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

▼\'90\'7d形描画オブジェクトの基\'96\'7b属性

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


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

▼以下のサンプルコードでは、四角形を作成して、\'90\'7d形描画ドキュメント上に\'91\'7d入します。

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 のコード行では、作成した\'90\'7d形描画オブジェクトをページ上に\'91\'7d入しています。

▼塗りつぶし属性

この節では 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) を赤、終了色 (Angle) を緑として、角度 (EndColor) を 45 度にしています。▼開始色と終了色の強度 (StartIntensity および EndIntensity) はともに 150 パーセントとしてあるので、StartColor と 属性の指定色よりも明るく\'95\'5c示されます。EndColorグラデーションする色のステップ数は 100 段階としてあります (StepCount)。

▼ハッチング

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

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

▼以下のサンプルコードは、ハッチング指定用の\'8d\'5c造体の使用法を示します。

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 度にしています。▼また線の\'95\'5c示色 (Color) は灰色、線の間隔 (Distance) は 0.2 ミリメートルとしています。

ビットマップ

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

外部のビット\'83\'7dップファイルを使用する場合は、その 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 サービスをサポートしています。▼このサービスに用意されている代\'95\'5c的な属性としては、以下のものがあります。

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』を参照してください。

▼テキスト属性 (\'90\'7d形描画オブジェクト)

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 属性を利用して行なっています。

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

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 属性を用いて、図形描画オブジェクトの左上隅に設定しています。▼また\'90\'7d形描画要素の外形線からテキストまでの間隔は、3 ミリメートルとしています。

▼影の属性

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

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

▼以下のサンプルコードでは、四角形のオブジェクトを作成し、水平および垂直方向のオフセットを 2 ミリメートルとした影を\'95\'5c示します。▼影の色は灰色、透過性は 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)

▼各種の\'90\'7d形描画オブジェクトの概要

▼四角形オブジェクト

四角形オブジェクト (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 (with 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 (with 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 属性は、円全体を描画するか、あるいは切片や円弧として描画するかを指定します。▼指定可\'94\'5cな定数値は以下のものです。

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 サービスが用意されています。▼線オブジェクトは、\'95\'5c面関係の指定を除いた、基\'96\'7b的な\'95\'5c示指定サービスをすべてサポートしています。▼LineShape サービスで利用する属性は以下のものです。

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

▼以下のサンプルコードでは、線オブジェクトを作成し、上記の属性を用いて各種の\'95\'5c示を設定します。▼なお線の始点は 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 つのオブジェクト全体は、個々の頂点を指定する各種のリストから\'8d\'5c成されます。

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

Fill properties
com.sun.star.drawing.FillProperties
Line properties
com.sun.star.drawing.LineProperties
Text properties
com.sun.star.drawing.Text (with 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())

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

▼頂点指定用の配列を利用することで、複数の多角形を組み合わせた\'90\'7d形を\'8d\'5c築できます。▼たとえば、四角形の中に別の四角形を\'91\'7d入することで、穴の空いた四角形を描画できます。

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 では「外部のオブジェクトの縁が多角形の外周部となる」という規則に従って処理されます。▼同様に、内側の縁は多角形の内周部となるので、こうした部分に穴が空くことになります。▼更に内側にくる縁がある場合は、そこから塗りつぶされた領域の描画が再開されます。

▼\'90\'7dオブジェクト

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

▼\'90\'7dオブジェクトは、以下の 2 つの\'95\'5c示設定用属性をサポートしています。

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

▼\'90\'7dオブジェクトのサポートするその他の属性には、以下のものがあります。

GraphicURL (String)
図の URL。

AdjustLuminance (Short):パーセント単位で指定した、色の輝度 (負の値も指定可能)。

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

▼以下のサンプルコードは、ページへの\'90\'7dオブジェクトの\'91\'7d入法の例です。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