Top > OOobbs3 > 122

OOobbs3/122 Edit

  • サマリ: オリジナルサイズの機能をマクロで実行したい
  • 環境: Calc
  • 状態: 解決
  • 投稿者: yutaka?
  • 投稿日: 2014-04-28 (月) 23:49:55

質問 Edit

お世話になります。

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

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

よろしくお願いします

回答 Edit

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

感想,コメント,メモ Edit

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


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