アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

A 回答 (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座標からコントロール座標への変換の仕方です
    • good
    • 1
この回答へのお礼

ありがとうございます

出来ました!

お礼日時:2008/07/15 08:50

>ピクチャの画像は拡大・縮小をできるようにしてあるため、フォーム座標=ピクチャ座標にはなりません


…についてですが、マウスカーソルの位置が拡縮前の「元の画像の」
どこの座標に当たるか知りたい、という事でしょうか?
たぶん、元の画像とPictureBoxのサイズから拡縮率を算出して、
PictureBox内での座標に、その拡縮率を掛けて計算しないと
いけない気がしますが… 他にやり方ありますかね?
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2008/07/14 17:20

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



Dim ptScr as Point = Me.PointtoScreen( e.X, e.Y)
Dim piCli as Point = PictureBox1.PointToClient( ptSrc )
で変換できるように思います
    • good
    • 1
この回答へのお礼

ありがとうございます

試してみます

お礼日時:2008/07/14 17:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています