2010-04-07 14 views

Respuesta

9

Cree un rect redondo como trazado, seleccione el trazado como el trazado de recorte y luego realice un relleno degradado del mismo rectángulo. Código con MFC se vería así:

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

Si usted no está utilizando MFC, la pDC->x(...) sería reemplazado con x(your_DC, ...).

+0

gracias, funciona! – lovespring

Cuestiones relacionadas