C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 161 を表示中)
■93117 / )  Re[3]: ピクセル数の求め方を教えてください
□投稿者/ 魔界の仮面弁士 (2493回)-(2019/11/21(Thu) 17:27:10)
No93116 (犬夜叉 さん) に返信
>>> エクセルの行の高さを5〜12で指定してから
>>> エクセル画面をキャプチャーしてペイントソフトでピクセル数を取得した値です。
> バラバラになっているのはどうしてでしょうか?

手元の Excel 環境で、8 つの行に対して、それぞれのセルの高さを
5 ピクセル〜12ピクセルまでドラッグで設定し、その画面キャプチャを
測定しましたが、特にズレは発生していませんでした。
(シートの縮尺率は、もちろん 100% にしています)


> エクセル ピクセル Twips値??

Twips値 と記した後ろに「??」が付与されているのが気になります。

とりあえず、右端の値を 20 で割って CInt すると、誤差が丸まって
左端の値に合致するようですが、この高さはどうやって取得したものでしょうか?


ピクセルを基準とする場合、 No93115 で述べたように画面の dpi 値が必要です。
たとえば画像高さやセルの高さを「インチ」単位で取得したら、そこに
実行環境の dpi 値(96 とか 144 とか)を乗じればピクセル数が求まります。


もしも Excel VBA の LoadPicture 関数を使って
 MsgBox LoadPicture("C:\temp\test.bmp").Height
などで画像高さを得るような場合、こちらは「HiMetric」単位系となります。
1 ミリメートル = 100 HiMetric ですので、ここで得られた値を
1000で割ればセンチメートル、100 で割ればミリメートルになりますし、
2540で割ればインチになります。


ワークシート上に画像を貼る場合、その画像は Shape オブジェクトとなり、
Height プロパティで高さを取得・設定できます。こちらは「ポイント」単位系です。
インチに揃える場合は、 No93115 で述べたように 72 で割れば OK ですし、
ピクセルに揃えるなら、 「Height 値 × dpi 値 ÷ 72」です。


Excel でワークシートの行の高さをドラッグ操作で変更する場合、
ドラッグ中には『高さ:ポイント数(ピクセル数)』表記のツールチップが表示されます。
この高さは、Excel VBA では Range オブジェクトの RowHeight プロパティで
取得・設定できます。こちらも「ポイント」単位系です。
返信 編集キー/


管理者用

- Child Tree -