*図形描写 [#b852652e] Calc で図形描写を使用してみます。図形描写のそれぞれのオブジェクトはドロー ページに配置されているので,ドロー ページへアクセスする必要があります。 Calc で図形描写を使用してみます。図形描写のそれぞれのオブジェクトはドローページに配置されているので,ドローページへアクセスする必要があります。 ドロー ページへのアクセスについては[[ドロー ページ>../drawpage]]を見てください。 ドローページへのアクセスについては[[ドローページ>../drawpage]]を見てください。 図形描写ではさまざまなオブジェクトを描くことができます。 図形描写でドロー ページへ新しいシェープを追加するときには,次のようにします。 図形描写でドローページへ新しいシェープを追加するときには,次のようにします。 +ドロー ページオブジェクトを取得する。 +ドキュメント オブジェクトの AvailableServiceNames プロパティーで利用できるシェープ サービス名のサービスを ''createInstance'' メソッドでインスタンス化する。 +インスタンス化したシェープ オブジェクトのプロパティーを変更する。サイズや位置など。 +ドロー ページ オブジェクトの ''add'' メソッドを使用してシェープを追加する。 +ドローページオブジェクトを取得する。 +ドキュメントオブジェクトの AvailableServiceNames プロパティーで利用できるシェープサービス名のサービスを ''createInstance'' メソッドでインスタンス化する。 +インスタンス化したシェープオブジェクトのプロパティーを変更する。サイズや位置など。 +ドローページオブジェクトの ''add'' メソッドを使用してシェープを追加する。 シェープは同じ種類のプロパティーを持っているので,まとめて取り上げます。 様々な図形に関しては [[Draw>OOoBasic/Draw]] も参照してください。 #contents **テキスト シェープ [#hc694f2c] テキスト シェープのサービス名は com.sun.star.drawing.TextShape です。 **テキストシェープ [#hc694f2c] テキストシェープのサービス名は com.sun.star.drawing.TextShape です。 位置やサイズ,テキスト以外のプロパティーを設定せずにインスタンスを作成してドロー ページへ追加すると,普通のテキストが描かれるテキスト シェープになります。 位置やサイズ,テキスト以外のプロパティーを設定せずにインスタンスを作成してドローページへ追加すると,普通のテキストが描かれるテキストシェープになります。 でも,サイズや位置を指定して挿入するのが普通です。 次のコードでは Calc ドキュメントの一番目のシートにテキスト シェープを挿入して "text shape" の文字を入力します。 #code(ob){{ Sub textshape_1 Dim oDoc As Object, oSheet As Object Dim oTextShape As Object, oDrawpage As Object Dim oText As Object Dim aPos As New com.sun.star.awt.Point Dim aSize As New com.sun.star.awt.Size 次のコードでは Calc ドキュメントの一番目のシートにテキストシェープを挿入して "text shape" の文字を入力します。 Sub textshape_1 Dim oDoc As Object, oSheet As Object Dim oTextShape As Object, oDrawpage As Object Dim oText As Object Dim aPos As New com.sun.star.awt.Point Dim aSize As New com.sun.star.awt.Size oDoc = ThisComponent oSheet = oDoc.getSheets().getByIndex(0) oDrawPage = oSheet.DrawPage oTextShape = oDoc.createInstance("com.sun.star.drawing.TextShape") oText = oTextShape.getText() aPos.X = 1500 aPos.Y = 2000 aSize.Width = 10000 aSize.Height = 1000 oTextShape.setPosition(aPos) oTextShape.setSize(aSize) oDrawPage.add(oTextShape) oText.String = "text shape" End Sub }} End Sub シェープを作成する際の手順はいつも大体次のようになります。 +ドロー ページへアクセスできるようにしておく +ドローページへアクセスできるようにしておく +シェープのインスタンスを作成する +サイズと位置を設定する +ドロー ページへ挿入する +ドローページへ挿入する +シェープのプロパティーを設定する 縦書きテキストにするには,''TextWritingMode'' プロパティーを設定します。このプロパティーは com.sun.star.text.WritingMode2 の定数を使用して設定します。 oTextShape.TextWritingMode = com.sun.star.text.WritingMode2.TB_RL を指定します。 **ライン シェープ [#u919da0f] ライン シェープは com.sun.star.drawing.LineShape サービスによるものです。 位置やサイズを設定してドロー ページに追加します。 #code(ob){{ Sub lineshape Dim oDoc As Object, oSheet As Object Dim oDrawpage As Object Dim oLineShape As Object Dim aPos As New com.sun.star.awt.Point Dim aSize As New com.sun.star.awt.Size **ラインシェープ [#u919da0f] ラインシェープは com.sun.star.drawing.LineShape サービスによるものです。 位置やサイズを設定してドローページに追加します。 Sub lineshape Dim oDoc As Object, oSheet As Object Dim oDrawpage As Object Dim oLineShape As Object Dim aPos As New com.sun.star.awt.Point Dim aSize As New com.sun.star.awt.Size oDoc = ThisComponent oSheet = oDoc.getSheets().getByIndex(0) oDrawPage = oSheet.DrawPage oLineShape = oDoc.createInstance("com.sun.star.drawing.LineShape") aPos.X = 400 aPos.Y = 500 aSize.Width = 1000 aSize.Height = 500 oLineShape.setPosition(aPos) oLineShape.setSize(aSize) oDrawPage.add(oLineShape) End Sub }} まず,''createnInstance'' メソッドを利用してライン シェープのための .drawing.LineShape サービスをインスタンス化します。 End Sub まず,''createnInstance'' メソッドを利用してラインシェープのための .drawing.LineShape サービスをインスタンス化します。 位置の設定には aPos 変数に com.sun.star.awt.Point struct を使用し,サイズの設定には com.sun.star.awt.Size struct を使用します。順に,''setPosition'' メソッドで位置を,''setSize'' メソッドでサイズを設定します。 サイズおよび位置はすべて mm 単位の 1/100 で指定します。そのため,上のコードで追加したライン シェープの位置はシートの左上から (x, y) = (4 mm, 5 mm) の位置になります。 サイズおよび位置はすべて mm 単位の 1/100 で指定します。そのため,上のコードで追加したラインシェープの位置はシートの左上から (x, y) = (4 mm, 5 mm) の位置になります。 シェープの二点目の位置は座標で指定するのではなくて一点目からの幅と高さで指定します。 ドロー ページへのシェープの追加には ''add'' メソッドを利用します。 ドローページへのシェープの追加には ''add'' メソッドを利用します。 **四角形シェープ [#lf2d3cda] 長方形を描く四角形シェープは com.sun.star.drawing.RectangleShape です。 やはり,位置やサイズを指定してドロー ページへ追加します。 #code(ob){{ Sub rectangleshape Dim oDoc As Object, oSheet As Object Dim oRectangleShape As Object, oDrawpage As Object Dim aPos As New com.sun.star.awt.Point Dim aSize As New com.sun.star.awt.Size やはり,位置やサイズを指定してドローページへ追加します。 Sub rectangleshape Dim oDoc As Object, oSheet As Object Dim oRectangleShape As Object, oDrawpage As Object Dim aPos As New com.sun.star.awt.Point Dim aSize As New com.sun.star.awt.Size oDoc = ThisComponent oSheet = oDoc.getSheets().getByIndex(0) oDrawPage = oSheet.DrawPage oRectangleShape = oDoc.createInstance("com.sun.star.drawing.RectangleShape") aPos.X = 400 aPos.Y = 500 aSize.Width = 1000 aSize.Height = 500 oRectangleShape.setPosition(aPos) oRectangleShape.setSize(aSize) oDrawPage.add(oRectangleShape) End Sub }} End Sub 位置とサイズしか指定せずに追加すると,アプリケーション上で描いた四角形シェープとおなじようなシェープになります。必要なプロパティーを設定してゆく必要があります。 **円シェープ [#v82ddda3] 円シェープは com.sun.star.drawing.EllipseShape サービスを利用します。 このサービスをインスタンス化して使用します。 oDoc.createInstance("com.sun.star.drawing.EllipseShape") **シェープのプロパティー [#d6f49bcd] シェープの持つプロパティーは同じなので,一度にまとめて取り上げます。 ***位置 [#ta0f4457] 位置のプロパティーは ''Position'' です。このプロパティーは com.sun.star.awt.Point struct を利用して設定します。 この struct のプロパティーは ''X'' と ''Y'' です。1/100 mm 単位で指定します。ドローページの右上から,右方向が X,下方向が Y になります。 ***サイズ [#e45bfe90] サイズのプロパティーは ''Size'' です。com.sun.star.awt.Size struct を使用して設定します。 この struct のプロパティーは ''Width'' および ''Height'' です。ともに,1/100 mm 単位で指定します。 |