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

VC++で、pictureBoxで表示した画像を適当な場所をクリックするとその座標とRGBの色あいが表示するプログラムなんですが、エラーはしなかったんですが、デバックして画像表示して適当にクリックしてもなにも表示されませんでした。
プログラムに間違えでもあるのかみてください。

private: System::Void pictureBox1_MouseDown(System::Object^sender, System::Windows::Forms::MouseEventArgs^ e) {
String^fname = openFileDialog1->FileName;
Bitmap^fun = gcnew Bitmap(fname);
Point^ p = PointToClient( Point(e->X ,e->Y));
Color^col = fun->GetPixel(p->X,p->Y);
label1->Text = String::Format("..{0}", fun->GetPixel(p->X,p->Y));
}

A 回答 (1件)

PictureBoxのSizeModeは何でしょう? Normalなのでしょうか


NormalならPointToClientで変換する必要はありませんよ

StreatImageの場合は表示する画像ファイルの大きさ(高さ・幅)とPictureBoxの大きさの比率を考えてPointの換算をします

Zoomの場合は縦・横どちらが基準になっているのかを考えて換算します

CenterImageの場合は画像のどの部分が表示されているのかを考えてオフセットを考えましょう

MouseDownイベントで毎回イメージを選択するのは意図したことでしょうか
あらかじめPictureBoxにのImageプロパティに設定されているなら
Bitmap^ fun = gcnew Bitmap( pictureBox1->Image );
でイメージをBitmapオブジェクトに変換したほうがいいように思います
    • good
    • 0

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