在c#中,你可以使用drawing2d.lineargradientbrush,但是在c++中我现在只找到了CreateSolidBrush函数。原生gdi dll中是否有创建渐变画笔的功能?我在 msdn 上找不到类似的东西。谢谢
问问题
4046 次
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 GradientFill、CreateCompatibleBitmap和CreatePatternBrush
于 2009-09-13T18:09:28.493 回答
2
C# 将 GDI+ 用于 Drawing2d。您也可以在 C++ 中使用 GDI+ - MSDN 创建线性渐变
于 2009-09-13T18:24:13.847 回答