2016-09-19 4 views
-4

プログラムで色のブロックを作成するにはどうすればよいですか?私は答えのためのMSDNのドキュメントを見てきましたが、それはそこにあるようではありません。私はちょうど今のところ場所の色のブロックを作成できるようにする必要があります。 (私はすでにWM_CREATEがどのように働いているのか、そしてWndProcに物を実装する方法を知っています)WINAPIで色のブロックを作成する

+0

をこのコードを置きますか? – kichik

+0

@kichikはい。基本的に思えるかもしれませんが、1週間前のように学び始めました。 – Creep2DJ

+0

[C++でFillRect()を使用する]の複製があります。(http://stackoverflow.com/questions/16110527/using-fillrect-in-c) –

答えて

0

色をつけてrectを作成する角度または任意の形状を入力してください。 この例は、どのように表示するかです。

**あなたは、ウィンドウの上に長方形を描く意味するか、あなたのウィンドウプロシージャに

case WM_PAINT: 
    { 

     PAINTSTRUCT ps; 
     HDC hDc = BeginPaint(hWnd, &ps); 
     HBRUSH hBrush = CreateSolidBrush(RGB(90, 50, 120)); 

     RECT rct = {100, 100, 300, 200}; 

     FillRect(hDc, &rct, hBrush); 

     EndPaint(hWnd, &ps); 
     DeleteObject(hBrush); // freeing resource to avoid memory leak 
    } 
    break; 
+1

これはあまり長く続きません。次の 'WM_PAINT'では、あなたのものと交差するクリッピング矩形で、それは歴史になります。どのように処理したかを表示したい場合は、正しく実行します(つまり、レンダリングコードを 'WM_PAINT'ハンドラに入れます)。 – IInspectable

0

WM_PAINTを処理する必要があります。その後、BeginPaintに電話し、さまざまな機能を使用して描画し、最後にEndPaintを呼び出します。

長方形を描画するには、FillRectを使用できます。ここ

詳細:導かれた例も利用可能である

https://msdn.microsoft.com/en-us/library/windows/desktop/dd162759(v=vs.85).aspx

:基本的に

https://msdn.microsoft.com/en-us/library/windows/desktop/ff381401(v=vs.85).aspx

:カスタムブラシを作成することができ

switch (uMsg) 
    { 

    case WM_PAINT: 
     { 
      PAINTSTRUCT ps; 
      HDC hdc = BeginPaint(hwnd, &ps); 

      // All painting occurs here, between BeginPaint and EndPaint. 

      FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1)); 

      EndPaint(hwnd, &ps); 
     } 
     return 0; 

    } 
+0

@kitchikあなたの例では、あなたが質問していないクライアントエリア全体をペイントしています。直角または楕円または任意の形状を作成し、カスタムカラーで色付けしてください。 – Raindrop7

関連する問題