Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Ayuda: pintar ejes en coordenadas (https://www.clubdelphi.com/foros/showthread.php?t=53179)

sionks 13-02-2008 04:50:08

Ayuda: pintar ejes en coordenadas
 
Buenas, tengo un pequeño problema y es que deseo realizar lo siguiente:

* Tengo en un Form un componente image y quiero qeu cuando pase el mouse por encima del image se pinten dos lineas que salgan de las esquinas del image y que sigan el puntero del mouse a donde se mueva dentro del image, ojal alguien me pueda enciar un ejemplo de como relizarlo, desde ya muchas gracias.

Crandel 13-02-2008 09:11:12

Mira el demo que trae delphi llamado Graphex, te va a resultar de gran ayuda.

Suerte

PeterPunk 14-02-2008 09:44:41

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Canvas.Brush.Color := Form1.Color;
end;
procedure TForm1.Image1MouseLeave(Sender: TObject);
begin
  Image1.Canvas.FillRect(Image1.Canvas.ClipRect);
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Puntos: array [0..2] of TPoint;
begin
  Image1.Canvas.FillRect(Image1.Canvas.ClipRect);
  Puntos[0].X := 0;
  Puntos[0].Y := Y;
  Puntos[1].X := X;
  Puntos[1].Y := Y;
  Puntos[2].X := X;
  Puntos[2].Y := 0;
  image1.Canvas.Polyline(Puntos);
end;

EDITO:
Evidentemente lo que he hecho es repintar la imagen con el color del fondo del formulario. Pero si lo que quieres es dibujar sobre un gráfico (que la imagen que uses tenga algún objeto cargado en Picture) debería ser algo más parecido a esto:
Código Delphi [-]
implementation

{$R *.dfm}

var
  MiDibujo: TPicture;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MiDibujo := TPicture.Create;
  MiDibujo.LoadFromFile('D:\Delphi3\MartianMouse.bmp');
  Image1.Width := MiDibujo.Width;
  Image1.Height := MiDibujo.Height;
  Image1.Canvas.Draw(0, 0, MiDibujo.Graphic);
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  With Image1.Canvas do
    begin
      Draw(0, 0, MiDibujo.Graphic);
      MoveTo(0, Y);
      LineTo(Image1.Width, Y);
      MoveTo(X, 0);
      LineTo(X, Image1.Height);
    end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  MiDibujo.Free;
end;

end.


La franja horaria es GMT +2. Ahora son las 19:51:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi