2010-04-07 4 views

Antwort

9

Erstellen Sie ein abgerundetes Rechteck als Pfad, wählen Sie den Pfad als Beschneidungspfad aus, und führen Sie dann eine Farbverlaufsfüllung desselben Rechtecks ​​aus. Code mit MFC würde wie folgt aussehen:

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

Wenn Sie nicht MFC verwenden, die pDC->x(...) mit x(your_DC, ...) ersetzt werden würde.

+0

danke, es funktioniert! – lovespring