Difference between revisions of "JA/Documentation/BASIC Guide/Structure of Drawings"
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 | ||
}} | }} | ||
Line 375: | Line 375: | ||
===テキスト属性 (図形描画オブジェクト)=== | ===テキスト属性 (図形描画オブジェクト)=== | ||
− | <idl>com.sun.star.style.CharacterProperties</idl> サービスおよび <idl>com.sun.star.style.ParagraphProperties</idl> サービスでは、図形描画オブジェクト内でテキストを書式設定できます。これらのサービスは、個々の文字や段落に関する指定を行うものですが、詳細については「[[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> サービスを用いたフォントの書式指定を行なっています。 | ||
Line 736: | Line 736: | ||
{{PDL1}} | {{PDL1}} | ||
+ | {{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Structure of Drawings}} | ||
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Structure of Drawings}} | {{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Structure of Drawings}} |
Revision as of 22:37, 12 December 2008
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 サービスをサポートしており、多数の機能が共通しています。たとえば図形描画オブジェクトの Size や Position 属性は、このサービスに定義されています。
なお書式設定や塗りつぶしなど、位置やサイズ以外の属性の変更については、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 パーセントとしてあるので、StartColor と EndColor 属性の指定色よりも明るく表示されます。グラデーションする色のステップ数は 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). |