tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルスケールモードのセンチメートルについて
記事No11241
投稿日: 2008/01/27(Sun) 20:16
投稿者ヘルド
フォームのスケールモードをセンチメートルにして
フォーム上に1センチ毎に線を表示してみたのですが、
for l=0 to 10
  line (l,0)-(l,5)
next

手持ちの定規を使って正確に表示されているか見てみると、定規と違う間隔で線が描画されていました。
理由が分からず困っています。

ご存知の方いらっしゃいましたら、ご教授よろしくお願いします。

[ツリー表示へ]
タイトルRe: スケールモードのセンチメートルについて
記事No11242
投稿日: 2008/01/27(Sun) 20:40
投稿者魔界の仮面弁士
> 手持ちの定規を使って正確に表示されているか見てみると、定規と違う間隔で線が描画されていました。
> 理由が分からず困っています。

論理サイズというものは、物理サイズを示すものではありません。
(プリンタ出力のような場合は、比較的正しい値になるのですが)

たとえば、画面表示に、投影型のプロジェクターを使っていた場合、
スクリーンまでの距離によって、物理サイズは異なりますよね。
あるいは、一般的な液晶モニタに表示している場合を想定しても、
モニタのサイズは機種によって異なるため、見た目のサイズも異なります。

[ツリー表示へ]
タイトルRe^2: スケールモードのセンチメートルについて
記事No11243
投稿日: 2008/01/27(Sun) 22:36
投稿者ヘルド
ご返答ありがとうございます。

PCでは論理サイズというもので表示されているんですね。
家にある古いプリンタを出して、
先ほどのプログラムを印刷してみたら1センチ毎に線が描かれていました。

物理サイズで線を引くようなことはできますでしょうか?
(プリンタの論理サイズで計算するような方法など)

[ツリー表示へ]
タイトルRe^3: スケールモードのセンチメートルについて
記事No11244
投稿日: 2008/01/28(Mon) 01:34
投稿者花ちゃん
> 物理サイズで線を引くようなことはできますでしょうか?
> (プリンタの論理サイズで計算するような方法など)

画面の実幅 が求められるなら計算できますが、実測して求めるなら
(プリンターの場合用紙の寸法が決まっているので物理サイズが計算できる)

画面上の物理サイズ(mm)=画面の解像度×Screen.TwipsPerPixelX ÷ 画面の物理実幅(mm)

私のノートで計算すると   53.89 Twip = 1024(ピクセル) * 15 / 285(画面の実幅)

従って 下記で10mm 毎に線を引く事ができます。
Private Sub Form_Load()
   Me.ScaleMode = vbTwips
   Me.AutoRedraw = True
   Dim i As Long
   For i = 100 To 6000 Step 539
      Line (i, 0)-(i, 500)
   Next i
End Sub

[ツリー表示へ]