• ベストアンサー

領域を塗りつぶしたい

縦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 を使っています。

質問者が選んだベストアンサー

  • ベストアンサー
noname#30727
noname#30727
回答No.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);

A__
質問者

お礼

そのソースで出来ました。 ありがとうございます。

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

四角形なら、APIの Rectangle() が使えます。 7色分の Pen を作っておいて、SelectObject() しながら7回四角形を書けばOKです。

A__
質問者

お礼

ありがとうございます。 使ったことがなかった関数だったからちょっと難しかったです。 今やっと少しできました。