Een gradiënt tekenen, moet waarschijnlijk geen probleem meer zijn.
Om een niet rechthoekige vorm in te kleuren met een dergelijke gradiënt, kun je gebruik maken van regions of paths. Hieronder een voorbeeld met een path, waarbij je de gradiënt eerst naar een tijdelijke bitmap tekent, het path definieert, het clippath selecteert, en daaroverheen de bitmap tekent:
Delphi Code:
procedure TForm1.PaintBox1Paint(Sender: TObject);
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
try
Bmp.SetSize(100, 100);
DrawAngularGradient(Bmp.Canvas, [clRed, clBlue], Rect(0, 0, 100, 100), 0);
BeginPath(PaintBox1.Canvas.Handle);
PaintBox1.Canvas.Pie(0, 0, 100, 100, 50, 100, 100, 50);
EndPath(PaintBox1.Canvas.Handle);
SelectClipPath(PaintBox1.Canvas.Handle, RGN_COPY);
PaintBox1.Canvas.Draw(0, 0, Bmp);
finally
Bmp.Free;
end;
end;
Dit is overigens gewoon GDI, geen GDI+, maar ik vermoed dat dit afdoende is.
Bookmarks