2009-09-13 68 views
2

在c#中,您可以使用drawing2d.lineargradientbrush,但在C++中,我現在只能找到CreateSolidBrush函數。本地gdi dll中是否有一個函數來創建漸變畫筆?我在msdn找不到這樣的東西。 感謝本地C++中的漸變畫筆?

回答

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); 
}