投稿日 | : 2004/02/29(Sun) 07:23 |
投稿者 | : おじん |
URL | : |
タイトル | : Re^6: 画面に正確な長さの線を引く |
> 仮にどのパソコンでも同じ長さのラインを引きたいのであればスケールモードを
> mm にしてラインを引けばどのパソコンやプリンターでも 50mm は 50mmだと思うのですが
と思っています。以下のコードでは、上2つは、見かけ約3.5cm、3つ目は約2cm。
Win98SE、VB6、液晶モニタ15インチ、1024X768です。
Option Explicit
Private Sub Command1_Click()
Me.ScaleMode = vbMillimeters 'ミリ単位
With Line1
.BorderWidth = 5 '見やすくするため
.X2 = .X1 + 30 '30mmの長さ
End With
End Sub
Private Sub Command2_Click()
Me.ScaleMode = vbTwips 'twips単位
With Line2
.BorderWidth = 5 '見やすくするため
.X2 = .X1 + Me.ScaleX(30, 6, 1) '30mmの長さ
End With
End Sub
Private Sub Command3_Click()
Me.ScaleMode = vbTwips 'twips単位
With Line3
.BorderWidth = 5 '見やすくするため
.X2 = .X1 + Screen.Width * 30 / (12 * 25.4) '30mmの長さ
End With
End Sub
そこで3つ目が正しい使い方としたら、ここでの変数の「12」のアプリからの
取得方法が問題になります(今はモニタが15インチであることが分かっています
から、X方向の長さは15*(4/5)=12(インチ)で求まりますが)。
> >疑問1:
> >TwipsPerPixelsXはパソコン(モニタ)によって違うのでしょうか?
> ピクセルあたりのtwip 数だから当然解像度等によって違ってきます。
TwipsPerPixelXは最近知ったことで、これまで「15」という定数を
使っていました。偶然不都合はなかったと言うことでしょう。因みに
手持ちのノートパソコン(Win95、VB6,10インチ、800X600)でも15です。
ただ、上記のコードを実行するとすべてにおいて「正しい長さ」です。
(3つ目において12は8に変更する必要があります)。最初に800という
数値を使ったのはこのノートパソコンでは正しかったためでした。
共通して「正しい」のが3つ目の方法なので、「12(または使用モニタの
大きさ)」の取得方法にこだわっています。