Top > OOobbs3 > 122
** [[OOobbs3/122]] [#g5ab9e67]
-''サマリ'': オリジナルサイズの機能をマクロで実行したい
-''環境'': Calc
-''状態'': 解決
-''投稿者'': [[yutaka]]
-''投稿日'': 2014-04-28 (月) 23:49:55
*** 質問 [#af7fa480]
お世話になります。

図形を選択して右クリックで出てくる”オリジナルサイズ”をマクロで実行する方法はありますか?

または、図形のオリジナルサイズを取得する方法はありますか?

よろしくお願いします
*** 回答 [#ibbba676]
- APIから一手で行う方法はありません。選択して .uno:OriginalSize コマンドを呼ぶのが一番簡単な方法になります。画像の場合、図形描写オブジェクトの Graphic.SizePixel または Graphic.Size が画像の元サイズのようです。 -- はにゃ? &new{2014-04-30 (水) 00:36:41};

#comment


*** 感想,コメント,メモ [#p5a6224c]
- 回答ありがとうございます。 -- yutaka &new{2014-04-30 (水) 16:32:41};
- .uno:OriginalSize コマンドはできました。Graphic.SizePixelも一応できましたが、単位変換は、1Pixel=0.75ポイント、1ポイント=1/25.4inch、1インチ=25.4mm(0.75/72*25.4=0.26458  (mm/pixel))(2014-05-07訂正)で計算すると大体合いそうですが、これでいいですか? -- yutaka &new{2014-04-30 (水) 16:48:18};
- css.awt.XUnitConversion を使って変換してみましたが、同じサイズになりませんねぇ。手で計算すると、私の環境では 96pixel/1 inch で計算されているようです。

 Function GetLogicSize()
  win = ThisComponent.getCurrentController().ComponentWindow
  
  source = ThisComponent.getCurrentSelection().getByIndex(0).Graphic.SizePixel
  
  dest = win.convertSizeToLogic(source, com.sun.star.util.MeasureUnit.MM_100TH)
  msgbox dest.Width & ", " & dest.Height
 End Function

-- はにゃ? &new{2014-05-03 (土) 02:54:12};
- Calc のシート上に挿入した画像と同じ画像を Draw に挿入して、両方のオリジナルサイズを比較すると、違ったサイズが表示されるんですよね。Draw の方は上記のコードで計算したものと一致します。以前から、Calc のシート上に真円を描くと縦長になると思っていましたが、これも倍率計算のバグなんでしょうかねぇ。ScDrawView::CalcNormScale コード辺りが変な計算をしていてよくわかりませんが。 -- はにゃ? &new{2014-05-03 (土) 03:44:52};
- css.awt.XUnitConversion はどうやったら使えるようになるんですか?  -- yutaka &new{2014-05-07 (水) 09:32:59};
- 96pixel/1 inch ということは、私の環境と同じです。 -- yutaka &new{2014-05-07 (水) 09:33:35};
- XUnitConversion は出力デバイスクラスを継承しているコンポーネントなどで利用できます。つまり、ウィンドウやダイアログです。上記のコードではコンポーネントウィンドウから利用しています。96 pixel/inch は内部のデフォルトの値と同じです。Calc の倍率計算ではセルの幅と高さを積算しているようですが、まだよく読んでません。 -- はにゃ? &new{2014-05-07 (水) 18:14:46};
- すみません、XUnitConversion が出来なかったのは、画像を選択していなかったせいでした。 -- yutaka &new{2014-05-07 (水) 20:55:07};
- XUnitConversionで実行してみましたが、私の環境(ApatchOpenofficePortable4.0.1)では一致しました。下記は適当にデスクトップを切り取ってctrl+Vで貼り付けてマクロを実行した結果。 -- yutaka &new{2014-05-07 (水) 20:56:16};
 .size.width  '2062
 .size.height  '1824
 .Graphic.SizePixel.width*0.75/72*25.4*100  '2063.75
 .Graphic.SizePixel.height*0.75/72*25.4*100  '1825.625
 Function GetLogicSizeの結果:2064 1826(Drawでも同じでした)
#comment

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