検索条件
全3件
(1/1ページ)
com.sun.star.drawing.GraphicShapeObjectの大きさを変える。
OpenOffice.org Calc 3.0.0
別記事「[Calc] ファイル選択ダイアログを開き、選択された画像を挿入する」にて挿入した画像を、アスペクト比を保ちながらサイズの変更を行う。
上記の別記事中のマクロに続いて処理を実行させる場合、挿入された画像のDrawPageオブジェクトのインデックスは、対象シート中のDrawPageオブジェクトの中で最大となる。このため、処理対象画像の選択はインデックスにて判定(最大のインデックス値を持つ画像を対象)を行っている。
const MAX_WIDTH as Integer = 10000 ' 10cm const MAX_HEIGHT as Integer = 10000 sub resizePicture dim sheet as Object dim drawPg as Object dim draw as Object sheet = ThisComponent.CurrentController.ActiveSheet drawPg = sheet.getDrawPage if drawPg.getCount > 0 then 'インデックスが最大のオブジェクトを対象とする draw = drawPg.getByIndex( drawPg.getCount - 1 ) else exit sub end if dim scale as double dim drawResize as new com.sun.star.awt.Size '拡大率を求める if draw.Size.Width > draw.Size.Height then '横長の場合 scale = MAX_WIDTH / draw.Size.Width else '縦長の場合 scale = MAX_HEIGHT / draw.Size.Height end if with drawResize .Width = draw.Size.Width * scale .Height = draw.Size.Height * scale end with draw.setSize(drawResize) end sub
数値変数の型の最大値と最小値はどこかに定数として用意されているのでしょうか?
メニュー「挿入 - 画像 - ファイルから」に相当するマクロ
OpenOffice.org Calc 3.0.0
sub insertPicture dim document as Object dim dispather as Object ' get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") ' ファイル選択ダイアログの初期化 dim filePickerDlg as Object filePickerDlg = createUnoService("com.sun.star.ui.dialogs.FilePicker") filePickerDlg.appendFilter( _ "JPEG画像ファイル(*.jpg, *.jpeg)", "*.jpg", "*.jpeg") if filePickerDlg.execute = 1 then 'ファイルが指定された場合 dim selFiles() as String selFiles() = filePickerDlg.getFiles() dim picInfo(2) as new com.sun.star.beans.PropertyValue picInfo(0).Name = "FileName" picInfo(0).Value = selFiles(0) picInfo(1).Name = "FilterName" picInfo(1).Value = "JPEG - Joint Photograhpic Experts Group" picInfo(2).Name = "AsLink" picInfo(2).Value = false 'ダイアログで指定された画像をアクティブセルへ挿入 dispatcher.executeDispatch(document, ".uno:InsertGraphic", _ "", 0, picInfo()) end if end sub
OpenOffice.org Basicにてプログラムを作成した時のメモ。
環境は各記事を参照。