2016-09-19 58 views
-4

如何在程序中創建一個顏色塊?我已經瀏覽了MSDN文檔以獲得答案,但似乎並不存在。現在我只需要能夠在地方創建顏色塊。 (我已經知道WM_CREATE如何工作以及如何在WndProc中實現)在WINAPI中創建一個顏色塊

+0

你的意思畫一個窗口上的矩形? – kichik

+0

@kichik是的。我知道這看起來很基本,但我剛剛開始像一週前學習。 – Creep2DJ

+0

[在C++中使用FillRect()]的可能副本(http://stackoverflow.com/questions/16110527/using-fillrect-in-c) –

回答

0

您可以創建一個刷自定義顏色然後創建一個矩形角度或任何形狀,然後填寫它: 這個例子只是爲了告訴你如何。

**把這個代碼的窗口過程中

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