Cita:
Empezado por gatosoft
sin embargo, después de ver la imagen, creo que no es el componente que necesitas (aunque igual podrías conseguirlo)
Yo te recomiendo seguir con tu idea original ... pintar en el Lienzo directamente (tCanvas)... es bastante trabajo, pero puedes hacer tus propias rutinas para facilitarlo...
|
En este caso y viendo la imagen coincido con [gatosoft], el componente no se va a facilitar mucho.
Más vale que pintes directamente sobre el canvas.
Por ejemplo, un código que te puede servir para probar algunas cosas y ver si te sirve es el siguiente:
(1) Crea un formulario
(2) Coloca un
TImage y en Alineación selecciona
alClient.
(3) En el evento
OnShow del formulario pon lo siguiente:
Código Delphi
[-]
var
r1:TRect;
center, pos:TPoint;
i, angle, radioExt, radioInt:Integer;
delta:double;
begin
Image1.Canvas.Brush.Color := clInfoBk;
Image1.Canvas.FillRect(Image1.Canvas.ClipRect);
Image1.Canvas.Pen.Color := clBlue;
r1 := Image1.Canvas.ClipRect;
r1.Width := Min(r1.Width, r1.Height);
center.X := (r1.Width DIV 2); Center.Y := (r1.Height DIV 2);
InflateRect(r1, -20, -20); Image1.Canvas.Ellipse(r1);
radioExt := (r1.Width DIV 2);
InflateRect(r1, -40, -40); Image1.Canvas.Ellipse(r1);
radioInt := (r1.Width DIV 2);
Image1.Canvas.Pen.Color := clGray;
InflateRect(r1, -5, -5); Image1.Canvas.Ellipse(r1);
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.FloodFill((r1.Width DIV 2), (r1.Height DIV 2), clBlue, fsBorder);
Image1.Canvas.Pen.Color := clRed;
for i := 0 to 11 do begin
angle := i*30; delta := ((angle-90)*pi/180);
...
... Pintar las secciones...
end;