线条的颜色没有变化?

时间:2012-06-22 15:23:33

标签: c windows winapi graphics

我想在我的窗口画一条白线:

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

但颜色仍然是黑色。什么错了?

1 个答案:

答案 0 :(得分: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
}