- ベストアンサー
領域を塗りつぶしたい
縦10ドット、横70ドット の領域を、横に7等分して 虹の色をつける。 □□□■■■■ という感じにしたいんだけど、塗りつぶし関係のソースを 教えてください。 sikaku01 = CreateWindow( "STATIC", "", SS_WHITE | WS_CHILD | WS_VISIBLE, 0,0,10,10, hWnd, NULL, hInstance, NULL); これを7個作って、sikaku01 の領域の色を変える方法しか 分かりませんでした。 もっといい方法があると思うんです。 領域の色は固定じゃなくて、ランダムにチラチラと変色 させたいから、色を変えられる領域で、その領域を塗りつぶす 方法が知りたいです。 SetPixel( ) での1ドットずつの描画も思いついたけど、 遅いし、領域ごとの塗りつぶしの方法でやりたいと思いました。 コンパイラは BCC32 を使っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
WM_PAINTの中からならこんな感じ(テストしてないので間違いあるかも) HDCさえ取得できれば、FillRectで自由に書き込めます。 PAINTSTRUCT ps; HDC hdc; HBRUSH hbrush; RECT rect; case WM_PAINT: hdc = BeginPaint(hwnd, &ps); /* hwnd はウィンドウハンドル */ hbrush = CreateSolidBrush(0x456789); /* COLORREF: 0x00BBGGRR */ rect.left = 0; rect.top = 0; rect.right = 10; rect.bottom = 10; FillRect(hdc, &rect, hbrush); DeleteObject(hbrush); EndPaint(hwnd, &ps);
その他の回答 (1)
- a-kuma
- ベストアンサー率50% (1122/2211)
四角形なら、APIの Rectangle() が使えます。 7色分の Pen を作っておいて、SelectObject() しながら7回四角形を書けばOKです。
お礼
ありがとうございます。 使ったことがなかった関数だったからちょっと難しかったです。 今やっと少しできました。
お礼
そのソースで出来ました。 ありがとうございます。