Top > OOoBasic > Calc > image
* 画像挿入 [#y00a6b1e]

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

#contents

** 画像図形描写オブジェクト [#ffe9d4a0]
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 プロパティに設定します。

** コマンドで挿入 [#b653af69]
.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