2

在c#中,你可以使用drawing2d.lineargradientbrush,但是在c++中我现在只找到了CreateSolidBrush函数。原生gdi dll中是否有创建渐变画笔的功能?我在 msdn 上找不到类似的东西。谢谢

4

3 回答 3

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);
}
于 2009-09-13T20:17:54.950 回答
2

您必须结合使用 Win32 API GradientFillCreateCompatibleBitmapCreatePatternBrush

于 2009-09-13T18:09:28.493 回答
2

C# 将 GDI+ 用于 Drawing2d。您也可以在 C++ 中使用 GDI+ - MSDN 创建线性渐变

于 2009-09-13T18:24:13.847 回答