Top > OOoBasic > Calc > image

画像挿入 Edit

Calc のシート上に画像を挿入します。図形描写オブジェクトを挿入する場合と同じ方法になります。

画像図形描写オブジェクト Edit

com.sun.star.drawing.GraphicObjectShape サービスをインスタンス化して図形描写オブジェクトとしてターゲットのシートのドローページに挿入します。

Sub InsertPictureOnSheet
 doc = ThisComponent
 sheet = doc.getSheets().getByIndex(0)
 drawpage = sheet.getDrawPage()
 
 Dim aSize as new com.sun.star.awt.Size
 Dim aPos as new com.sun.star.awt.Point
 
 shape = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
 
 shape.GraphicURL = ConvertToURL("/home/asuka/Pictures/test.png")
 
 ' in 1/100 mm
 aSize.Width = 1000
 aSize.Height = 1000
 aPos.X = 1000
 aPos.Y = 1000
 shape.Size = aSize
 shape.Position = aPos
 
 drawpage.add(shape)
End Sub

画像ファイルの URL を GraphicURL プロパティに指定します。また、サイズと位置を上記のように css.awt.Size および css.awt.Point 構造体で指定します。位置とサイズを指定しなければ原点位置にサイズ 0 で挿入されます。位置とサイズは後で指定することもできます。

この方法では、事前に画像のサイズを知っていなければ原寸サイズで挿入できません。挿入後の Graphic プロパティから画像のサイズを取得、計算して元の画像に反映させることができます。 または、GraphicURL を指定する代わりに css.graphic.GraphicProvider から取得した css.graphic.XGraphic インターフェースを Graphic プロパティに設定します。

コマンドで挿入 Edit

.uno:InsertGraphic コマンドで挿入する方法もあります。この場合、画像はセルカーソルのある位置になります。また、サイズは原寸サイズです。

Sub InsertGraphicByCommand
 doc = ThisComponent
 frame = doc.getCurrentController().getFrame()
 dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")
 
 sURL = ConvertToURL("/home/asuka/Pictures/test.png")
 
 Dim args(1) as new com.sun.star.beans.PropertyValue
 args(0).Name = "FileName"
 args(0).Value = sURL
 args(1).Name = "AsLink"
 args(1).Value = False
 
 dispatcher.executeDispatch(frame, ".uno:InsertGraphic", "", 0, args)
End Sub

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes