投稿日 | : 2004/02/28(Sat) 09:21 |
投稿者 | : おじん |
URL | : |
タイトル | : Re^2: 画面に正確な長さの線を引く |
まず、投稿の内容に間違いがありました。訂正いたします。
>画面に正確な長さ(XY cm)の線を引く時、経験的にその長さX?は
>Twips単位の場合、
>X?=(1440/2.54)*XY*(800/Dx)
>Dx=Screen.Width/Screen.TwipsPerPixelX=1024
>2.54、1440は定義。800は経験則(疑問2)
ここでもう一つのパソコンでやって見ると「正しい長さ」になりません
でした。経験則の「800」は正しくありません。削除訂正します。
>ScaleX、ScaleY メソッド で変換したのではだめですか?
2cmの長さの線を描きたいとした時、目測値はそれぞれ、
'Line1.X2 = Line1.X1 + (1440 / 2.54) * 2 '* 800 / 1024 <---2.2 cm
'Line1.X2 = Line1.X1 + Form1.ScaleX(20, 6, 1) <---2.2 cm
'Line1.X2 = Line1.X1 + Screen.Width * 2 / (12 * 2.54) <---2 cm
となりました。
ここで一番下の例の 12 は使用したパソコンの画面の大きさ15インチの
横方向の長さ 15 * (4/5) ==> 12 です。
長さは思うようになりましたが、1 inch = 1440 twips は絶対的長さでは
ないと仮定した考えによります。なにかおかしい気がします。
また使用モニタが何インチかまたは解像度を取得する方法を知りません。
>下記で印刷位置をmmで求めています。
>http://www.bcap.co.jp/hanafusa/VBHLP/pMargi.n.htm
今プリンタがつながっていないので改めてテストいたします。
>私のノートパソコンの環境ですが
>Picture1.ScaleX(10, 6, 1) '10mm = 566.9286 twip
>Picture1.ScaleX(10, 6, 3) '10mm = 37.79524 Pixels
今ここで使用しているパソコン(1024x768)では全く同じ値になりました。