ビットマップの再描画
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0002やれやれ
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG再描画?ビットマップをもう一回描画すればいいだけだ。簡単だろ?
0006Redraw of Bitmap
NGNG0007デフォルトの名無しさん
NGNGどうすれば消えないの??
ビットマップ保持したいのです
0008デフォルトの名無しさん
NGNGWin32API 質問箱 Build7
http://pc3.2ch.net/test/read.cgi/tech/1036654893
***すれ立てるまでもない質問はここで 第27刷***
http://pc3.2ch.net/test/read.cgi/tech/1039062864/l50
おまえ沢村並み
つーか沢村じゃなかろうな(-_-メ
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGマジレス
0012デフォルトの名無しさん
NGNGVBならAutoRedrawプロパティをTRUEに
0013デフォルトの名無しさん
NGNGレスすんな。
0015名無し@沢村
NGNG>おまえ沢村並み
つーか俺は再描画くらいはできるよ。ド素人の俺でさえね(藁)
ただリソースを減らさないのが難しいよ…。まだわからんよ…?
0016デフォルトの名無しさん
NGNG************** 終 了 ***************
00188
NGNGおまえの言う「再描画」とは
Rectangle(hdc,0,0,10,10);
Rectangle(hdc,0,0,10,10);
のことだろう
1の質問はもっと高度なことだ
1がスレ一覧を見ていないということと
沢村がMSDNを読んでないという点を
同レベルだと言ったのだ
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGついに答え書いちゃったのかよ。だから単発厨が調子に乗るんだ馬鹿野郎。
0021デフォルトの名無しさん
NGNGお前みたいなののためにHSPがある
0022デフォルトの名無しさん
NGNGうっさいハゲ
0023名無し@沢村
NGNGその通り。
WM_PAINTメッセージのイベントハンドラでビットマップを描くと、InvalidateRectを送るだけで再描画できるが、
WM_PAINT外にビットマップを描くと、InvalidateRectを送っても再描画されず、独自の処理が必要になる。
0024デフォルトの名無しさん
NGNGはあ?言ってる事が本末転倒だぞ。
0025デフォルトの名無しさん
NGNG沢村ってこんなおもろいヤツだったのか。
30秒ばかし笑わせてもらった。
2度とくんな
0026デフォルトの名無しさん
NGNGいや、むしろここから出てくんな。
0027デフォルトの名無しさん
NGNG隔離スレ作ってそこに・・・。ここを隔離するのでももちろん可
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNGInvalidateRectでWM_PAINTが呼ばれるから
WM_PAINT以外にビットマップ描画コードを書くなって事だと思われ。
InvalidateRectはタイマーで一定時間ごと呼んでもいいけど
WM_SIZEなどで呼んだほうがいいかな。
0030デフォルトの名無しさん
NGNG分かってまんがな。>>23を良く読むと何か変w
合ってはいるんだけど逆じゃん。InvalidateRectによってWM_PAINTメッセージが発生するわけであって。
0031名無し@沢村
NGNGそれは違うぞ。WM_PAINTイベントハンドラに描画のコードを書くと、そのプログラムを起動した段階ですでにウインドウに描画されているぞ。
つまりまだInvalidateRectは使ってないのにWM_PAINTメッセージが発生したことになるな。
だからInvalidateRectによってWM_PAINTメッセージが発生するというのは違うぞ。
0032デフォルトの名無しさん
NGNG同じクラスに沢村君ていうダウン症の子がいました。
君は第三小学校に通ってた沢村君?
0033デフォルトの名無しさん
NGNGUpdateWindowのことでは?
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNGが沢村脳内変換されて
WM_PAINT は InvalidateRect によって発生する、
に変化したもようようです。
0036デフォルトの名無しさん
NGNG同じ事を言っているような・・・
0037デフォルトの名無しさん
NGNGInvalidateRectを呼ぶ事はWM_PAINTが発生するための十分条件ですが必要条件ではありません。
0038デフォルトの名無しさん
NGNG以上。
0039デフォルトの名無しさん
NGNGたしかにアホなこと書くとヴァカと言われる板ではある。
0040デフォルトの名無しさん
NGNG正直、すまんかった。
ちゃんとアホというようにする。
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGそうです。沢村を崇め立てるスレです。
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG┌────┐ __
たぶん → C==| |llllll| |←キャップ
ここから飲む └────┘  ̄ ̄ (中に炭酸の素?が入ってて
↑ 閉めると炭酸が出てくる)
本体
0047デフォルトの名無しさん
NGNG結局社会の言い成りか。マスコミに煽られてビビってるようじゃ駄目だな。
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNG廃人で雪に入って凍っているかと思ったらまだ生きていたんですね。
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGハァ?あっちはヲチスレでしょ痛いよ、君。
0058デフォルトの名無しさん
NGNG|/゚U゚| ヤレヤレ
___|__|____
/ \ ___\
.<\※ \____|\____ヽ
ヽ\ ※ ※ ※| |====B=|
\`ー──-.|\|___l__◎..|ヽ
 ̄ ̄ ̄ ̄| .| ̄ ̄ ̄ ̄|
\| |〜
0059デフォルトの名無しさん
NGNGそれにどうしても匿名で告発したかったらインターネットカフェや
漫画喫茶などで書き込むことはできるはず
電気のインターネットコーナーでもいいしね
荒らしや誹謗中傷してる奴は暇を持て余してる身勝手な奴がほとんど
こいつらのためにわざわざ匿名にする必要はまったくもってなし
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 139038人 発行日:2003/1/10
なにやら、連日メルマガだしてるひろゆきです。
そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。
重くなって落ちたりしてもご愛嬌ってことで。。。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0063デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNG坂本竜馬と一緒だ。
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNGどこで見えるのか教えてちょーだいよ。
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNGあたし、タイーホなんですか?
(((( ;゚Д゚)))ガクガクブルブル
0072デフォルトの名無しさん
NGNG●2ちゃんねるでの1つの書き込みをきっかけに、さいたま県下の全小学校で警戒態勢がしかれたことについて、どう思いますか?
ひろゆき:お、そうなんですか?
テレビみてないので知りませんでした。
西村のモラルは完全に壊れている。
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG0076山崎渉
NGNG0077デフォルトの名無しさん
NGNG0078山崎渉
NGNG0079山崎渉
NGNG0080デフォルトの名無しさん
NGNG0081山崎渉
NGNG( ^^ )< ぬるぽ(^^)
0082デフォルトの名無しさん
NGNG(。A。)あああ
0083デフォルトの名無しさん
NGNGあああ
0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNGhttp://homepage3.nifty.com/coco-nut/
0088名無し@沢村
NGNGおまえよ、ビットマップの再描画はWM_PAINTの中に描画をする関数を書くんだよ。
まあそうしておけば、ウィンドウのサイズを変更したりしても絵は消えない。WM_PAINTの中に書いておけばな…。
ただしGetDC()ではなく、BeginPaint()でデバイスコンテキストを取得しないといかんぞ!
また絵に変更を加えた場合はInvalidateRectを使うと、自動的に画面は変更を加えられた絵に変化する。
これが再描画の基本だ。
だがこれだけじゃ連続して画面にアニメなどを描きたい場合は、画面がちらつくんだよ!
おまえな、画面がちらつかないようにアニメを描くには、ビットマップの描画を2段階に分けなくちゃいかん!
まず最初にWinMain関数の中にwindowをCreateした後、ビットマップをロードして描画するんだよ。
ここではGetDC()を使え。
そしてGetDC()で得たデバイスコンテキストと互換性のあるメモリデバイスコンテキストをCreateCompatibleDCで取得しろ。
このメモリデバイスコンテキストをhMemDCとする。
つぎにwindowのサイズと同じ大きさでCreateCompatibleBitmap()を使え。
そしてSelectObjectした後、window全体にPatBltしろ。最後にGetDC()で得たデバイスコンテキストを開放しろ。
これで描画その1は終わりだ。
おまえ、描画その2はな、WM_PAINTに描け。
このときはGetDC()ではなくBeginPaintを使え。
そしてまず画面をFillRectしろ。というのはその1でPatBltを使っているため画面がきたなくなっているからだ。
だからFillRectできれいに塗り直せ。
そしてその1で得たメモリデバイスコンテキストのhMemDCとさらに互換性のあるメモリメモリデバイスコンテキストhMemMemDCをCreateCompatibleDCで作れ。
そしてSelectObjectで最初にロードしといたビットマップを選び、BitBlt(hMemDC,?,?,?,?,hMemMemDC,?,?,SRCCOPY);とすれば描画のすべての完成だ。
そして最後にhMemMemDCをDeleteDCしてEndPaintすればいいよ。
またhMemDCのDeleteDCのほうはプログラム全体が終了する一番最後にすればいいよ。
おまいよ、これが画面がぜんぜんちらつかない完璧な描画のメカニズムつーかすべてよ。
参考にしろ!!!
0089名無し@沢村
NGNGおまいよ、描画その2だがな、
BitBlt(hMemDC,?,?,?,?,hMemMemDC,?,?,SRCCOPY);
とした後、大事なことが抜けていたよ。
それはな、BitBlt(hDC,?,?,?,?,hMemDC,?,?,SRCCOPY);よ。
hDCはBeginPaint取得したデバイスコンテキストよ。
これがないと画面に絵が出てこないから、くれぐれも忘れるな。いいか!!
0090名無し@沢村
NGNGまあコード化すればこんな感じよ。
void Draw1()//描画その1(WinMainの中に描く)
{
HDC hDC;
hDC=GetDC(hWnd);
hMemDC=CreateCompatibleDC(hDC);
hBIT=CreateCompatibleBitmap(hDC,?,?);
SelectObject(hMemDC,hBIT);
PatBlt(hMemDC,?,?,?,?,PATCOPY);
ReleaseDC(hWnd,hDC);
}
void Draw2(HWND hwnd)//描画その2(WM_PAINTの中に描く)
{
HDC hDC,hMemMemDC;
hDC=BeginPaint(hwnd,&paintstruct);
FillRect(hMemDC,&zen_rect,hBrush);
hMemMemDC=CreateCompatibleDC(hMemDC);
SelectObject(hMemMemDC,hBMP);
BitBlt(hMemMemDC,?,?,?,?,hMemDC2,?,?,SRCCOPY);
SelectObject(hMemDC,hBIT);
BitBlt(hDC,?,?,?,?,hMemDC,?,?,SRCCOPY);
DeleteDC(hMemMemDC);
EndPaint(hwnd,&paintstruct);
}
0091デフォルトの名無しさん
NGNG0092名無し@沢村
NGNGハゲコラクソおまえ!!
90がダブルバッファのやり方なんだよ!ハゲ!!
0093デフォルトの名無しさん
NGNG面倒になったなぁ。
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG誰かたしけてくださ〜い
0096山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGプッ
0099山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0100デフォルトの名無しさん
NGNG0101山崎 渉
NGNG■ このスレッドは過去ログ倉庫に格納されています