Ver Mensaje Individual
  #7  
Antiguo 27-02-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

A ver, modifico un poco un ejemplo a ver si podes lograr lo que estas buscando.
Código Delphi [-]
...
implementation 

procedure CenterEllipse(Img: TImage; x1,y1,x2,y2: Integer; aColor: TColor);
var
  C,R: TPoint;
begin
  C.X := (Img.Picture.Width) div 2;
  C.Y := (Img.Picture.Height) div 2;
  R.X := (x2-x1) div 2 ;
  R.Y := (y2-y1) div 2;
  if (C.X-R.X < 0) or (C.Y-R.Y < 0) or
     (C.X+R.X > Img.Picture.Width) or (C.Y+R.Y >Img.Picture.Height) then
    raise Exception.Create('Elipse fuera de rango');
  Img.Canvas.Brush.Style := bsClear;
  Img.Canvas.Pen.Color := aColor;
  Img.Canvas.Ellipse(C.X - R.X,  C.Y - R.Y, C.X + R.X, C.Y + R.Y);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // Cargar imagen en blanco
  Image1.Picture.LoadFromFile('Blank.bmp');
  // Ajustar el ancho y el alto del TImage a la imágen
  Image1.Width  := Image1.Picture.Width;
  Image1.Height := Image1.Picture.Height;
  // color verde
  Self.Color  := clMoneyGreen;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  i,x : Integer;
begin
  x := 10;
  for i := 0 to 50 do
  begin
    CenterEllipse(Image1, x, x, x*2, x*2, clBlack);
    Inc(x, 10);
  end;
end;

Este es el resultado, todos centrados.


Saludos

Nota: Delphi 7 soporta raise Exception (raise command)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita