[Calc] 図形のサイズを変える
2009/04/20
概要
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
ところで
数値変数の型の最大値と最小値はどこかに定数として用意されているのでしょうか?