ビットマップの再描画

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
ビットマップの再描画の方法教えてください
2やれやれ:02/12/19 15:50
2getする気にもならんクソスレだな。
3デフォルトの名無しさん:02/12/19 15:50
VC++6.0です
2gettt
>1
再描画?ビットマップをもう一回描画すればいいだけだ。簡単だろ?
6Redraw of Bitmap:02/12/19 16:05
Please teach me how to redraw a bit-map.
7デフォルトの名無しさん:02/12/19 16:12
描画を出したあとにウィンドウのサイズを変更すると消えてしまいます
どうすれば消えないの??
ビットマップ保持したいのです
>>1

Win32API 質問箱 Build7
http://pc3.2ch.net/test/read.cgi/tech/1036654893

***すれ立てるまでもない質問はここで 第27刷***
http://pc3.2ch.net/test/read.cgi/tech/1039062864/l50

おまえ沢村並み
つーか沢村じゃなかろうな(-_-メ
じゃあ>>1は海老原ということで
目に焼き付けておく。
11デフォルトの名無しさん:02/12/19 17:38
今時そんなのどこにでも書いてある。
マジレス
12デフォルトの名無しさん:02/12/19 23:11
>>7
VBならAutoRedrawプロパティをTRUEに
>>11
レスすんな。
14さげたる:02/12/19 23:14
>>1
ビットマップのファイルをクリック。
お使いのビューアが立ち上がったら、更に同じビットマップのファイルをクリック。
15名無し@沢村:02/12/19 23:16
>>8
>おまえ沢村並み
つーか俺は再描画くらいはできるよ。ド素人の俺でさえね(藁)
ただリソースを減らさないのが難しいよ…。まだわからんよ…?
本を1冊買えってことで


************** 終 了 ***************
17さげたる:02/12/19 23:21
>>15
なかすなよ。おかいよ気味。
188:02/12/21 21:20
>>15

おまえの言う「再描画」とは
Rectangle(hdc,0,0,10,10);
Rectangle(hdc,0,0,10,10);
のことだろう

1の質問はもっと高度なことだ
1がスレ一覧を見ていないということと
沢村がMSDNを読んでないという点を
同レベルだと言ったのだ
19デフォルトの名無しさん:02/12/23 04:51
WM_PAINTメッセージのイベントハンドラでビットマップを描け
>>19
ついに答え書いちゃったのかよ。だから単発厨が調子に乗るんだ馬鹿野郎。
>>1
お前みたいなののためにHSPがある
22デフォルトの名無しさん:02/12/23 07:30
>>20
うっさいハゲ
23名無し@沢村:02/12/23 07:43
>>19
その通り。
WM_PAINTメッセージのイベントハンドラでビットマップを描くと、InvalidateRectを送るだけで再描画できるが、
WM_PAINT外にビットマップを描くと、InvalidateRectを送っても再描画されず、独自の処理が必要になる。
>>23
はあ?言ってる事が本末転倒だぞ。
>>23
沢村ってこんなおもろいヤツだったのか。
30秒ばかし笑わせてもらった。








2度とくんな
>>25
いや、むしろここから出てくんな。
>>26
隔離スレ作ってそこに・・・。ここを隔離するのでももちろん可
f u c k y o u
>>24
InvalidateRectでWM_PAINTが呼ばれるから
WM_PAINT以外にビットマップ描画コードを書くなって事だと思われ。

InvalidateRectはタイマーで一定時間ごと呼んでもいいけど
WM_SIZEなどで呼んだほうがいいかな。
>>29
分かってまんがな。>>23を良く読むと何か変w
合ってはいるんだけど逆じゃん。InvalidateRectによってWM_PAINTメッセージが発生するわけであって。
31名無し@沢村:02/12/24 20:47
>>InvalidateRectによってWM_PAINTメッセージが発生するわけであって。

それは違うぞ。WM_PAINTイベントハンドラに描画のコードを書くと、そのプログラムを起動した段階ですでにウインドウに描画されているぞ。
つまりまだInvalidateRectは使ってないのにWM_PAINTメッセージが発生したことになるな。
だからInvalidateRectによってWM_PAINTメッセージが発生するというのは違うぞ。
小学生の時
同じクラスに沢村君ていうダウン症の子がいました。
君は第三小学校に通ってた沢村君?
33デフォルトの名無しさん:02/12/24 20:55
>>31
UpdateWindowのことでは?
名無し@沢村は脳機能がダウンしているだけで、ダウン症とは関係ありません。
InvalidateRect によって WM_PAINT が発生する、
が沢村脳内変換されて
WM_PAINT は InvalidateRect によって発生する、
に変化したもようようです。
>>35
同じ事を言っているような・・・
>>36
InvalidateRectを呼ぶ事はWM_PAINTが発生するための十分条件ですが必要条件ではありません。
InvalidateRectによってもWM_PAINTメッセージが発生する。
以上。
39デフォルトの名無しさん:02/12/25 12:52
>>1 この板になんか怨みでもあるの?
たしかにアホなこと書くとヴァカと言われる板ではある。
>>39
正直、すまんかった。
ちゃんとアホというようにする。
ヴァカが糞スレをあげる。
沢村板はここですか
>>42
そうです。沢村を崇め立てるスレです。
まあ記録されてるとは言っても、ののたんのおまんこ裂きたいよね
大阪って何だよ
スレ違いかもしれないけど、

             ┌────┐ __
たぶん     → C==|       |llllll|   |←キャップ
ここから飲む    └────┘  ̄ ̄  (中に炭酸の素?が入ってて
               ↑          閉めると炭酸が出てくる)
               本体         
情けない話だ。
結局社会の言い成りか。マスコミに煽られてビビってるようじゃ駄目だな。
48デフォルトの名無しさん:03/01/09 14:43
ID:ZBsKvw39 が嫌がってるから>>249は効果有りそうだな。
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
レーズン
多段串で絶対わからん。
明け方は逢魔時
西村氏は
廃人で雪に入って凍っているかと思ったらまだ生きていたんですね。
裁判関係は移動しる!
ざまあみろなわけだが。。。バク
ここは建前だけのインターネットになるんですね

ハァ?あっちはヲチスレでしょ痛いよ、君。
           ∠ ̄\
            |/゚U゚|  ヤレヤレ
       ___|__|____
      / \       ___\
     .<\※ \____|\____ヽ
        ヽ\ ※ ※ ※| |====B=|
        \`ー──-.|\|___l__◎..|ヽ
          ̄ ̄ ̄ ̄| .| ̄ ̄ ̄ ̄|
               \|        |〜
2chには自由を身勝手と履き違えている人が多すぎる
それにどうしても匿名で告発したかったらインターネットカフェや
漫画喫茶などで書き込むことはできるはず
電気のインターネットコーナーでもいいしね
荒らしや誹謗中傷してる奴は暇を持て余してる身勝手な奴がほとんど
こいつらのためにわざわざ匿名にする必要はまったくもってなし
子供だからわかりませんってほんとに言ったの?>にかいどー氏に
侮辱罪で訴えるます
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
全国の吉野家借り切りですな・・・
馬鹿も底無しだったら台風の目で逆に安全なんだろ。
坂本竜馬と一緒だ。
ひろゆきに叩かれろ
最後の記念カキコ
(・∀・)チューボーですよ!
ねぇ、6億超えちゃったんだし
どこで見えるのか教えてちょーだいよ。
批判要望のスレなんで止められてんのよ
JBBSも方針かえるかな?
煤i´Д`;
あたし、タイーホなんですか?

(((( ;゚Д゚)))ガクガクブルブル

●2ちゃんねるでの1つの書き込みをきっかけに、さいたま県下の全小学校で警戒態勢がしかれたことについて、どう思いますか?

ひろゆき:お、そうなんですか?
テレビみてないので知りませんでした。



西村のモラルは完全に壊れている。
さいたまに住んでいます
「代理」って分かる?
76山崎渉:03/01/13 19:03
(^^)
払?あっちはヲチスレでしょ痛いよ、君。
78山崎渉:03/01/15 17:47
(^^)
79山崎渉:03/01/23 22:24
(^^)
まあ記録されてるとは言っても、ののたんのおまんこ裂きたいよね
81山崎渉:03/04/20 04:36
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
(゚∀゚)あああ
(。A。)あああ
>>81
あああ
84 ◆tmK1tKbmdE :03/04/30 22:36
しょうきょしますた
85 ◆vBOFA0jTOg :03/04/30 22:39
宇宙人襲来
87デフォルトの名無しさん:03/05/01 09:15
スカラ〜電磁波
http://homepage3.nifty.com/coco-nut/
88名無し@沢村:03/05/01 21:11
>>1
おまえよ、ビットマップの再描画は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のほうはプログラム全体が終了する一番最後にすればいいよ。
おまいよ、これが画面がぜんぜんちらつかない完璧な描画のメカニズムつーかすべてよ。
参考にしろ!!!
89名無し@沢村:03/05/01 21:23
>>1
おまいよ、描画その2だがな、
BitBlt(hMemDC,?,?,?,?,hMemMemDC,?,?,SRCCOPY);
とした後、大事なことが抜けていたよ。
それはな、BitBlt(hDC,?,?,?,?,hMemDC,?,?,SRCCOPY);よ。
hDCはBeginPaint取得したデバイスコンテキストよ。
これがないと画面に絵が出てこないから、くれぐれも忘れるな。いいか!!
90名無し@沢村:03/05/01 21:34
>>1
まあコード化すればこんな感じよ。
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);
}
ダブルばっふぁ
92名無し@沢村:03/05/02 20:30
>>91
ハゲコラクソおまえ!!
90がダブルバッファのやり方なんだよ!ハゲ!!
ダブルバッファリングなんてゲーム以外でも使うんだ。
面倒になったなぁ。
94デフォルトの名無しさん:03/05/02 22:16
沢村は優しいなあ
95デフォルトの名無しさん:03/05/26 02:18
おれもビットマップきえたよ〜
誰かたしけてくださ〜い
96山崎渉:03/05/28 12:44
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
明け方は逢魔時
>>3
プッ
99山崎 渉:03/07/15 10:11

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
全国の吉野家借り切りですな・・・
101山崎 渉:03/08/02 02:19
(^^)
102山崎 渉:03/08/15 16:30
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
(^^)
104デフォルトの名無しさん:04/05/04 23:36

105デフォルトの名無しさん:04/07/14 21:26
うわqこんなに伸びてやガッたのか
106ほんたま:04/07/14 21:35
>>1よ。
ビットマップの再描画も知らんのか?
>>1よ。
まずビットマップはウィンドウプロシージャのWM_PAINTに書くのはしってるか?
よし、そこまでは知ってるな、よし。
次にInvalidateRectをつかうとWM_PAINTメッセージが送られて再描画されるのは、知ってるか?
よし、そこまでは知ってるな、よし。
>>1よ。
それが再描画のすべてだ。安心しろ。おみゃ〜は全部知ってるよ。
>>1よ。
他にわからんことがあったら、ほんたまに聞け♪
まだ続けるのか・・・

とりあえず、ぬるぽ
108デフォルトの名無しさん:04/07/17 11:25
ビットマップハンドルを使わずにビットマップを描く方法はないものか
(要はリソース消費を押さえたい)
109デフォルトの名無しさん:04/07/17 12:00
>>108

DIBを使えばよい。
>>107
ガッ
111ほんたま:04/07/17 20:24
>>108
ビットマップファイルからピクセルデータを読み取り、1点1点描画していけばハンドルはいらないよ。
112デフォルトの名無しさん:04/07/17 23:09
メタファイルを使ったら・・・あ、これもリソース使うのか?
113デフォルトの名無しさん:04/07/18 00:09
GDI/GDI+のビットマップ転送能力
GDI/GDI+で転送速度を計測しました。GDI+は本当に遅いのか?
http://lamoo.s53.xrea.com/develop/gdiplus/gdiplus_blt.html
114デフォルトの名無しさん:04/11/22 10:50:29
115デフォルトの名無しさん:05/02/02 18:35:34
this.Refresh();
116デフォルトの名無しさん:05/02/02 23:55:19
>>113
画像:640x480x24
解像度:1280x1024x16bpp
ビデオカード名しらん、「ディスプレイアダプタ」のとこ見るとSiS650ってかいてある

Aのほう
---------------------------
結果
---------------------------
ON : DIB:2.080206, DDB:0.013229, Bitmap:3.652826, Cache:1.853451
OFF : DIB:2.946714, DDB:0.013859, Bitmap:4.264843, Cache:2.942266
---------------------------
OK
---------------------------

Bのほう
---------------------------
結果
---------------------------
ON : DIB:2.025172, DDB:0.001959, Bitmap:3.694890, Cache:1.854956
OFF : DIB:2.899022, DDB:0.001930, Bitmap:4.268155, Cache:2.955365
---------------------------
OK
---------------------------

Bのテスト、DDBクソはやーい
117デフォルトの名無しさん:2005/06/22(水) 18:45:04
良スレ保守
118デフォルトの名無しさん:2005/06/22(水) 18:51:18
やっぱそうでもねえな・・
119デフォルトの名無しさん:2005/06/23(木) 00:47:18
うわ、まだこのスレあったんだ・・・
120総括します:2005/06/26(日) 18:12:08
>>12
>>88-90 >>91-92
>>106
あたりが為になったな、VBしか使えん超初心者の俺としては。

しかし、そのためだけに、119レスも使ってるのって‥
10回に1回は、誰かが良い事言うスレって事か。
121デフォルトの名無しさん
おれがマジレスしなきゃすぐ消えたスレなんだろうなあ・・・・
でも勉強になりました