Ver Mensaje Individual
  #6  
Antiguo 08-02-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por gatosoft Ver Mensaje
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
  // Fondo
  Image1.Canvas.Brush.Color := clInfoBk;
  Image1.Canvas.FillRect(Image1.Canvas.ClipRect);
  // Circulo exterior
  Image1.Canvas.Pen.Color := clBlue;
  r1 := Image1.Canvas.ClipRect;
  r1.Width := Min(r1.Width, r1.Height);     // hacerlo cuadrado

  center.X := (r1.Width DIV 2); Center.Y := (r1.Height DIV 2);

  InflateRect(r1, -20, -20);  // 20 más pequeño
  Image1.Canvas.Ellipse(r1);
  radioExt := (r1.Width DIV 2); //Radio exterior

  InflateRect(r1, -40, -40);  // 40 más pequeño
  Image1.Canvas.Ellipse(r1);
  radioInt := (r1.Width DIV 2); //Radio exterior

  Image1.Canvas.Pen.Color := clGray;
  InflateRect(r1, -5, -5);  // 40 más pequeño
  Image1.Canvas.Ellipse(r1);

  // Pintar la parte interior
  Image1.Canvas.Brush.Color := clWhite;
  Image1.Canvas.FloodFill((r1.Width DIV 2), (r1.Height DIV 2), clBlue, fsBorder);

  // Pintar las secciones
  Image1.Canvas.Pen.Color := clRed;

  // Divisiones del aro (12)
  for i := 0 to 11 do begin
    angle := i*30;  // en grados
    delta := ((angle-90)*pi/180);
    ...
    ... Pintar las secciones...
    
  end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita