VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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(または使用モニタの
大きさ)」の取得方法にこだわっています。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -