画像表示と座標について – プログラミング – Home

画像表示と座標について
 
通知
すべてクリア

[解決済] 画像表示と座標について


クワット
 クワット
(@クワット)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

開発環境 Windows XP Visual C++6.0 SDIです。

画像処理ソフトを作成していてメモリ上のビットマップファイルを表示するところまで
はできました。

そこで質問ですが、ビットマップデータを画面に表示後に
マウスメッセージのLOWORD(LPARAM)とHIWORD(LPARAM)から得られる座標とBitマップ画像
の座標を対応させるにはどのような計算手法を用いればよろしいでしょうか?
マウスで選択した範囲の画像データの平均値等を求めることが目的です。

表示手法は下記のとおりです。
(1)Size_X,Size_Yの32bitDIB画像を作成するためDIB情報を作成
(2)バッファ(m_data)を確保し、画像データを作成
(3)StretchDIBitsで表示(拡大縮小に対応)

考え方のヒント等でも結構ですのでアドバイスをお願いいたします。

---------------------------------------------------
//DIBの情報を設定する
bmpInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
bmpInfo.bmiHeader.biWidth=m_SizeX;
bmpInfo.bmiHeader.biHeight=-m_SizeY;
bmpInfo.bmiHeader.biPlanes=1;
bmpInfo.bmiHeader.biBitCount=32;
bmpInfo.bmiHeader.biCompression=BI_RGB;

DWORD* m_data = new DWORD[m_SizeX * m_SizeY];

//画面を表示
StretchDIBits
(hdc,0,0,m_SizeX,m_SizeY,0,0,m_SizeX,m_SizeY,m_data,&bmpInfo,DIB_RGB_COLORS,SRC
COPY);
--------------------------------------------------------


引用未解決
トピックタグ
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

DIBに関しては、このHPが詳しいです。
私もここで覚えました。

http://eternalwindows.jp/graphics/bitmap/bitmap00.html


返信引用
クワット
 クワット
(@クワット)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

アドバイスありがとうございます。
今日一日HPと書籍でいろいろ調べましたが問題解決にいたっていません。

ビットマップを扱う際の形式で
DDB,DIB,DIBSection の違いまでは理解できました。
DIBSecitonにして、GDI関数を使えばなんとかなるのでしょうか?

大変恐縮ですが、アドバイスをお願いします。


返信引用
rin
 rin
(@rin)
ゲスト
結合: 18年前
投稿: 112
 

>マウスメッセージのLOWORD(LPARAM)とHIWORD(LPARAM)から得られる座標とBitマップ画像
>の座標を対応させるにはどのような計算手法を用いればよろしいでしょうか?
 ↑
本当にこれが目的であるならば、GDIもDIBの詳細な知識もいらない

>画像処理ソフトを作成していてメモリ上のビットマップファイルを表示するところまで
>はできました。
特に設定変えないかぎり
画像をどこに表示したのかと、マウスの現在位置は同じ方眼紙上にのってるようなもの
たとえば、

1:サイズ(100,100)の画像を、(10,10)の位置に拡大率100%で表示させ
る。
2:マウスの位置が(50,50)

この状況なら、画像上で(50-10,50-10)の位置にマウスがある
拡大縮小してるならそれを考慮すればいい。


返信引用
クワット
 クワット
(@クワット)
ゲスト
結合: 16年前
投稿: 6
Topic starter  

rinさま

確かにおっしゃるとおりですね。
方眼紙上で考えればすべてうまくいくことがわかりました。
拡大縮小を含めて、rinさまから教えて頂いたやり方で座標を取得できました。

アドバイスありがとうございました。


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

あ、本当ですね。
良く読んだら、マウス座標と画像座標ですね。
これなら、難しいことは何もないですね。

失礼いたしました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました