• ベストアンサー

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

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 でやると、どうも、フォームの座標が取得されてしまうようです ピクチャの画像は拡大・縮小をできるようにしてあるため、フォーム座標=ピクチャ座標にはなりません ピクチャボックスの座標を取得するにはどのようにしたらよいのか、ご教授願います

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

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座標からコントロール座標への変換の仕方です

msaitou
質問者

お礼

ありがとうございます 出来ました!

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

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

msaitou
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

PointToScreenとPointToCLientを使って変換すればいいように思います Dim ptScr as Point = Me.PointtoScreen( e.X, e.Y) Dim piCli as Point = PictureBox1.PointToClient( ptSrc ) で変換できるように思います

msaitou
質問者

お礼

ありがとうございます 試してみます

すると、全ての回答が全文表示されます。

関連するQ&A