PDA

Ver la Versión Completa : click en el canvas


Haddock
15-01-2008, 18:11:50
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:


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