こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ピクチャボックスの座標取得

Microsoft Visual Studio 2008のスマートデバイス用で、PDA用のプログラミングを開発しています。

フォーム上にピクチャボックスを貼りつけ、画像表示をできるようにしています
で、やりたいことは・・

Private Sub PictureBox1_MouseUp(ByVal sender As Object, _
ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles PictureBox1.MouseUp

'ピクチャボックスの座標を表示させる  

  End Sub

Private pos As Pointで宣言しておき、
pos.X = e.X
pos.Y = e.Y
でやると、どうも、フォームの座標が取得されてしまうようです
ピクチャの画像は拡大・縮小をできるようにしてあるため、フォーム座標=ピクチャ座標にはなりません

ピクチャボックスの座標を取得するにはどのようにしたらよいのか、ご教授願います

投稿日時 - 2008-07-14 13:55:19

QNo.4175771

困ってます

質問者が選んだベストアンサー

PictureBoxのSizeModeをStretchImageに設定されているのでしたら

dim img as Image = PictureBox1.Image
pos.X = e.X * img.Width / PictureBox1.Width
pos.Y = e.Y * img.Height / PictureBox1.Height

といった具合にスケーリングしてみてください

#1の回答はForm座標からコントロール座標への変換の仕方です

投稿日時 - 2008-07-15 01:04:25

お礼

ありがとうございます

出来ました!

投稿日時 - 2008-07-15 08:50:52

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>ピクチャの画像は拡大・縮小をできるようにしてあるため、フォーム座標=ピクチャ座標にはなりません
…についてですが、マウスカーソルの位置が拡縮前の「元の画像の」
どこの座標に当たるか知りたい、という事でしょうか?
たぶん、元の画像とPictureBoxのサイズから拡縮率を算出して、
PictureBox内での座標に、その拡縮率を掛けて計算しないと
いけない気がしますが… 他にやり方ありますかね?

投稿日時 - 2008-07-14 16:10:10

お礼

>どこの座標に当たるか知りたい、という事でしょうか?
実はタップした場所に印がつくようにしてあり、今のままですと、タップした場所と、しるしの付く場所がずれるのです。

やはり伸縮率の計算でしょうか??

投稿日時 - 2008-07-14 17:20:02

ANo.1

PointToScreenとPointToCLientを使って変換すればいいように思います

Dim ptScr as Point = Me.PointtoScreen( e.X, e.Y)
Dim piCli as Point = PictureBox1.PointToClient( ptSrc )
で変換できるように思います

投稿日時 - 2008-07-14 15:03:48

お礼

ありがとうございます

試してみます

投稿日時 - 2008-07-14 17:18:05

あなたにオススメの質問