Native C ++中的渐变画笔?

时间:2009-09-13 17:58:02

标签: c++ winapi native

在c#中,您可以使用drawing2d.lineargradientbrush,但现在在c ++中我只找到了CreateSolidBrush函数。在本机gdi dll中是否有一个函数来创建渐变画笔?我在msdn找不到这样的东西。 感谢

3 个答案:

答案 0 :(得分:4)

绘制垂直渐变:

void VerticalGradient(HDC hDC, const RECT& GradientFill, 
                      COLORREF rgbTop, COLORREF rgbBottom)
{
    GRADIENT_RECT gradientRect = { 0, 1 };
    TRIVERTEX triVertext[ 2 ] = {
        GradientFill.left - 1,
        GradientFill.top - 1,
        GetRValue(rgbTop) << 8,
        GetGValue(rgbTop) << 8,
        GetBValue(rgbTop) << 8,
        0x0000,         
        GradientFill.right,
        GradientFill.bottom,
        GetRValue(rgbBottom) << 8,
        GetGValue(rgbBottom) << 8,
        GetBValue(rgbBottom) << 8,
        0x0000
    };
    GradientFill(hDC, triVertext, 2, &gradientRect, 1, GRADIENT_FILL_RECT_V);
}

答案 1 :(得分:2)

您必须使用Win32 API GradientFillCreateCompatibleBitmapCreatePatternBrush

的组合

答案 2 :(得分:2)

C#使用GDI + for Drawing2d。您也可以在C ++中使用GDI + - MSDN Creating a Linear Gradient