如何在纯GDI(非GDI+)中为圆角矩形填充渐变。

6

只使用纯GDI。欢迎提供您的想法或代码。

1个回答

10

创建一个圆角矩形路径,将该路径选择为剪切路径,然后对相同的矩形进行渐变填充。在 MFC 中的代码如下:

int top = 10;
int left = 10;
int right = 200;
int bottom = 200;
int radius = 20;


pDC->BeginPath();
pDC->RoundRect(left, top, right, bottom, radius, radius);
pDC->EndPath();
pDC->SelectClipPath(RGN_COPY);

TRIVERTEX vertices[2];

vertices[0].x = left;
vertices[0].y = top;
vertices[0].Red = 0xffff;
vertices[0].Green = 0;
vertices[0].Blue = 0;
vertices[0].Alpha = 0xffff;

vertices[1].x = right;
vertices[1].y = bottom;
vertices[1].Red = 0;
vertices[1].Green = 0;
vertices[1].Blue = 0xffff;
vertices[1].Alpha = 0xffff;

GRADIENT_RECT r;
r.UpperLeft = 0;
r.LowerRight = 1;

pDC->GradientFill(vertices, 2, &r, 1, GRADIENT_FILL_RECT_V);

如果您没有使用MFC,那么pDC->x(...)将被替换为x(your_DC, ...)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接