タイトル : Re^6: 塗りつぶし(黒)の円をPC画面中央に配置する 投稿日 : 2015/04/15(Wed) 19:29 投稿者 : ゆきみち
返信ありがとうございました。 以下のプログラムで画面の中央に指定した大きさで丸を描けるのではないかと思いますが、 確認のほど宜しくお願い申し上げます。 Public Class Form1 Private Sub form1_paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint Dim x, y As Integer Dim a, b, c, d, f, h As Decimal a = 1366 'パソコン画面の横の解像度 b = 768 'パソコン画面の縦の解像度 c = 11.6 'パソコン画面の型(インチ) d = Math.Sqrt(a * a + b * b) 'ピタゴラスの定理よりパソコン画面の対角線上のドット数 f = c * 2.54 'パソコン画面の対角線上の長さ 1inch = 2.54cm h = 10 * f / d '1ピクセルが何mmに相当するか(=画素ピッチ)を求める 'Form1の中央のピクセルの値を調べる。 x = Me.ClientSize.Width \ 2 y = Me.ClientSize.Height \ 2 ' 中心が画面の中心で半径10mm(直径20mm)の緑の円を描画します。 Dim r As Decimal = 10 / h '1ピクセル:h o= x : 10mm e.Graphics.FillEllipse(Brushes.Black, x - r, y - r, r * 2, r * 2) End Sub > もし、画面サイズに忠実となるよう長さ補正をしたいのであれば、 > たとえば 500 px の直線を描画しておき、その直線がモニタ上で > どのくらいの長さに見えるのかを定規ではかってもらい、それを > 基準値して入力してもらう必要があると思います。 > ⇒ご指摘頂いた方法でも試してみました。同じように良い結果が得ることが出来ました。 ありがとうございました。ただ、ご指摘の方法をさらに応用してPCの解像度とモニターの大きさ(○○型) からでも算出できるような方法も考え、その方法でプログラムをしてみました。モニターの大きさはそのPC モニターの仕様を見れば記載されていますし、モニターの解像度はPCの「画面の設定」(Windows8)で 確認が可能であると思いますので誰が設定しても同じ画素ピッチになるのではないかと思いますが、 いかがでしょうか? 私が作成したプログラムは結局、ピクセルをベースにしたものとなりました。 更にプログラムを良くするのにあたり、改良点がありましたらご指摘頂けると幸いですがいかがでしょうか? |