CImageのLoadメソッドで取得した画像データを
Drawメソッドで表示したいのですが、
エラーになったしまうようでうまく表示できません。
どうしたらいいでしょうか
ソース
switch(msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_CREATE:
im.Load("test.png");
im2.Create(im.GetWidth(), im.GetHeight(),24,0);
break;
case WM_PAINT:
im.Draw(im2.GetDC(),0,0,im.GetWidth(),im.GetHeight());
break;
}
return DefWindowProc(hwnd , msg , wp , lp);
}
環境はWindowsXP,.Net2003です。
初心者名質問で申し訳ありませんが、どなたかご存知でしたらよろしくお願いします
うまくいかない場合は、以下の情報を明記しましょう。
・どんなエラーになるのか
ビルドエラーなのか、実行時エラーなのか、エラーは出ないけど期待した結果にならないのか
エラーメッセージも詳細に。
・うまく行っていない現状とは、どんなものなのか
上記のうち、3つ目の症状である場合、失敗しているなりにも何らかの実行結果があるはず。それはどんな感じ?
・「うまくいく」とは、どういうことなのか
同じく、3つ目の症状である場合、期待した結果はどういうものなのか。
忘れてた。
GetLastError でエラーが取得できる場合、エラーコードと FormatMessage の結果も書くべし。
で、今回の話。
致命的なポイントがひとつ、一応確認しておきたいポイントがひとつあります。
まず致命的なほう。
Draw の第一引数のデバイスコンテキストは、イメージを描画したい先を指定します。
今回、イメージを描画したい先はどこでしょう?
現在の im2.GetDC() で取得できるデバイスコンテキストでは、いったいどこに描こうとしているのでしょう?
要確認のほう。
WM_CREATE で Load した im は、WM_PAINT の時まで存在していますよね?
説明不足で申し訳ありません
エラーは実行時エラーでGetLastErrorは取得できませんでした。
要確認のほうですが、imはWM_PAINTの時まで存在しています。
今回はウィンドウに指定したpng画像が描画するのが目的です。
このような場にはあまり書き込んだりしないもので・・・・。
不手際ご容赦ください。
また、何か情報が足りなければ遠慮なくご指摘お願いいたします。
>> まず致命的なほう。
>> Draw の第一引数のデバイスコンテキストは、イメージを描画したい先を指定します。
> 今回はウィンドウに指定したpng画像が描画するのが目的です。
であれば、Draw の第一引数は、そのウィンドウのデバイスコンテキストなのでは?
CImageってコトですが…
MFCですか?
MFCならOnPaint()とかだと思うのですが。
DC関係はシャノンさんからレスがついているので、
掲示されたプロシージャについて1つ。
WM_PAINTの後、DefWindowProc()呼んでますけど、
ソレは期待した動作ですか?
WNDCLASSで登録したhbrBackgroundで塗りつぶされると思われますが…
>>であれば、Draw の第一引数は、そのウィンドウのデバイスコンテキストなのでは?
BeginPaintでデバイスコンテキストを取得したら上手く描画できました
ありがとうございました
ツイート | ![]() |