DOBON.NET DOBON.NETプログラミング掲示板過去ログ

マウスの座標(ミリメートル)

環境/言語:[c#]
分類:[.NET]

いつもお世話になっています。

またまた疑問に思うことがあり、お教え頂きたく書き込み致します。
よろしくお願いします。

下記のコードにより、ステータスバーに、pictureBox1上にあるマウスの座標を
出力しようとしているのですが、下記では当然のごとく
pictureBox1の左上を原点にして、ピクセル単位で表示されます。

private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
this.statusBar1.Text = e.X.ToString() +","+ e.Y.ToString();
}


@ピクセル単位ではなくミリメートル単位にするにはどうしたらいいでしょうか?
(マウスの座標ではなく、四角や円等を描く場合ならできたのですが・・・)

A原点を左上ではなく、pictureBox1の中央にするにはどうしたらいいでしょうか?
(おそらく、pictureBox1の縦横それぞれを2で割るのだと思うのですが
マウスの座標原点の動かし方がわかりません・・orz


よろしくお願いいたします。
こんにちは。

> @ピクセル単位ではなくミリメートル単位にするにはどうしたらいいでしょうか?
> (マウスの座標ではなく、四角や円等を描く場合ならできたのですが・・・)
> 
> A原点を左上ではなく、pictureBox1の中央にするにはどうしたらいいでしょうか?
> (おそらく、pictureBox1の縦横それぞれを2で割るのだと思うのですが
> マウスの座標原点の動かし方がわかりません・・orz

精度はあまりよくないと思いますが、簡単にやるならば

using(Graphics g = pictureBox1.CreateGraphics())
{

    double x = (e.X - pictureBox1.Width/2) / g.DpiX * 25.4;
    double y = (-e.Y + pictureBox1.Height/2) / g.DpiY * 25.4;
    textBox1.Text = "x=" + x.ToString() + " , " + "y=" + y.ToString();
}

こんな感じでできると思います。
2番目の質問に関しては、次のページも参考になると思います。

DOBON.NET .NET Tips - ワールド変換により画像を平行移動、拡大、縮小、回転して表示する
http://dobon.net/vb/dotnet/graphics/transform.html
管理人様、ant様ありがとうございます。

早速今、いろいろ試してみています。 ant様に教えてもらったことを
いろいろ調べてみたのですが、ピクセルをミリに直すのは、解像度
の知識も必要ではないか?と、今さとりこちらもあわせて調べています。

また、まとまってからもう一度書き込みさせて頂きます。

ありがとうございます!

DOBON.NET | プログラミング道 | プログラミング掲示板