Reputation: 54113
In c#, you can use drawing2d.lineargradientbrush, but in c++ right now I only found the CreateSolidBrush function. Is there a function in the native gdi dll to create a gradient brush? I couldn't find anything like this at msdn. Thanks
Upvotes: 4
Views: 4590
Reputation: 347226
You would have to use a combination of the Win32 API GradientFill
, CreateCompatibleBitmap
, and CreatePatternBrush
.
Upvotes: 2
Reputation: 13721
To draw a vertical gradient:
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);
}
Upvotes: 6
Reputation: 4834
C# uses GDI+ for Drawing2d. You can use GDI+ in C++ also - MSDN Creating a Linear Gradient
Upvotes: 2