2012-06-22 130 views
0

我想画的白线在我的窗口:线条的颜色没有改变?

case WM_PAINT: 
    { 
     hdc=GetDC(hWnd); 
     SelectObject(hdc, GetStockObject(WHITE_BRUSH)); 
     MoveToEx(hdc, 0, 0, 0); 
     LineTo(hdc, 100, 100); 
     ReleaseDC(hWnd, hdc); 
    } 

但颜色仍然是黑色的。怎么了?

+0

顺便说一句,你应该在这里使用调用BeginPaint/EndPaint函数,不是的GetDC/ReleaseDC。 EndPaint()清除更新区域,如果你不这样做,你会一直得到WM_PAINT消息。 – BrendanMcK

回答

3

当您应该使用笔时,您正试图为您的线设置笔刷。笔用于填充形状的内部,而笔用于绘制线条。

MSDN says这大约笔:

甲笔是一个图形工具,应用程序可以使用绘制线条和 曲线。绘图应用程序使用笔来绘制手绘线条,直线 线条和曲线。

而且this约画笔:

刷是应用程序绘制多边形,椭圆和路径的内部 图形工具。

您的代码将需要更多的东西是这样的:

case WM_PAINT: 
{ 
    PAINTSTRUCT ps; 
    hdc=BeginPaint(hWnd, &ps); // Used instead of GetDC in WM_PAINT 
    HPEN hPen = CreatePen(PS_SOLID, 1, RGB(255,255,255)); 
    HPEN hOldPen = SelectObject(hdc, hPen); 
    MoveToEx(hdc, 0, 0, 0); 
    LineTo(hdc, 100, 100); 
    SelectObject(hdc, hOldPen); 
    DeleteObject(hPen); 
    EndPaint(hWnd, &ps); // Used instead of ReleaseDC in WM_PAINT 
} 
+2

您也可以使用'GetStockObject(WHITE_PEN)'。 –