Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   click en el canvas (https://www.clubdelphi.com/foros/showthread.php?t=52250)

Haddock 15-01-2008 18:11:50

click en el canvas
 
Hola a tod@s:
Tengo un form con una serie de jpg dibujados directamente en el canvas de un tpanel. Quiero que al hacer click sobre cada uno de ellos se haga la imagen mas grande. Como puedo dectertar las regiones para agrandar sobre la que se ha hecho click?

Gracias y saludos
Haddock

xEsk 15-01-2008 22:17:10

Y no seria posible usar unos cuantos TImage, en lugar de pintarlos en el Canvas del TPanel tu mismo? Ya que los TImage te ofrecen los eventos: "OnMouseMove", "OnMouseEnter", etc... y que te ayudarían a detectar si el cursor esta encima de alguna de las imágenes.

Saludos.

Haddock 16-01-2008 08:05:00

xEsk,
Las imágenes van cambiando de 5 en 5 y no te puedes imaginar la diferencia de rendimiento que hay entre utilizar los TImage y hacerlo directamente sobre el canvas, por eso los dibujo directamente al canvas, pero sigo necesitando tener un onclick sobre ellas

Saludos
Haddock

jachguate 16-01-2008 11:25:25

Determinar sobre cual se hizo clic es aritmética simple. Si las imágnes son de ancho/alto fijo, es mucho mas sencillo aún:

Como una idea:

Código Delphi [-]
TForm1 = class(TForm)
//...
private
  FLastMousePos: TPoint;
end;

implementation
//...

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  FLastMousePos.X := X;
  FLastMousePos.Y := Y;
end;

procedure TForm1.Panel1Click(Sender: TObject);
var
  IndiceImagen: Integer;
begin
  IndiceImagen := (FLastMousePos.Y div AltoEstandar) * ImagenesPorFila
                        + (FLastMousePos.X div AnchoEstandar);
  ClickEnImagen(IndiceImagen);
end;

Claro que hay que probarlo, y afinarlo... pero con eso ya te irás encaminando.

Hasta luego.

;)

Haddock 16-01-2008 16:30:51

jachguate,
Eso tiene buena pinta, ta noche lo pruebo y te digo

Gracias

Haddock


La franja horaria es GMT +2. Ahora son las 00:02:44.

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