2016-09-19 107 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

相关问题