![]()
Qualcuno sa come faccio a centrare un'immagine sul punto dove faccio click con il mouse? Grazie.
![]()
Qualcuno sa come faccio a centrare un'immagine sul punto dove faccio click con il mouse? Grazie.
La mia immagine deve essere zoommata ma il centro dell'immagine deve rimanere quello in cui cui faccio click con il mouse per ottenere lo zoom.
Ho fatto alcune prove e ne ho concluso che devo ricavare le coordinate del mouse e pensare che anche quelle coordinate si modificheranno a seguito dello zoom, invece devono rimanere le stesse.
[code]
var
zoom:double;
px,py:integer;
begin
Img.AutoSize := False;
Img.ScaleMode := smStretch;
begin
px:=mouse.CursorPos.X;
py:=mouse.CursorPos.Y;
end;
case Button of
mbLeft:
begin
if (img.width >8147) then
zoom:=1
else zoom:=0.8;
px:=trunc(px * zoom);
py:=trunc(py * zoom);
Img.Width := Trunc(Img.Width / zoom ) -px ;
Img.Height := Trunc(Img.Height / zoom ) -py;
end;
end;
[/Code ]
Non ottengo, ahimè, risultati.![]()
Siccome l'immagine è contenuta in una scrollbox ho pensato che un'altra possibilità fosse agire sulle scrollbar ma a questo punto preferisco chiedere un consiglio a chi ne sa certo più di me.![]()
Le proprietà su cui devi agire saranno Left e Top del controllo TImage contenuta nella TScrollBox, in modo da modificare la posizione del controllo quando fai clic e ingrandisci l'immagine.
Il problema vero è determinare quali sono le coordinate da attribuire a queste proprietà a seguito del clic calcolando quelle che portano, in sostanza, il punto preciso dell'immagine su cui è avvenuto il clic al centro dell'area visibile della ScrollBox, dopo che l'immagine è stata ingrandita.
Parlo in modo puramente teorico poiché dal lato pratico si dovrebbe studiare il meccanismo, scrivere codice appropriato e verificare i risultati; purtroppo, non ho questo tempo a disposizione, del resto manipolare le immagini non è sempre un gioco da ragazzi e la creazione di routine appropriate richiede un pochino di tempo e dedizione.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ho provato ad agire sulla proprietà left e top del controllo TImage
succede che la porzione dell'immagine che rimane fuori dal controllo non la posso vedere neanche con le barre di scorrimento: è proprio tagliata fuori. E' normale che sia così?codice:Img.Width:= trunc(Img.Width /zoom); Img.Height:=trunc(Img.Height/zoom); Img.left:=-Trunc(Img.Width - screen.width)div 2; Img.Top:=-Trunc(Img.Height -screen.height)div 2;![]()
Non ho capito come mai è subentrato Screen tra le variabili.Originariamente inviato da vicky
Ho provato ad agire sulla proprietà left e top del controllo TImage [...]
Di solito, per effettuare la centratura, si divide per due la differenza tra la dimensione del controllo esterno e il controllo interno, non viceversa.
A questo tipo di centratura ci avevo pensato, ma non so se è quello che vuoi: quando si clicca nella parte alta dell'immagine, ad esempio, essa deve essere ingrandita, è vero, ma io non mi aspetterei di trovarmi sempre al centro dell'immagine, bensì nell'area che ha come centro il punto in cui ho fatto clic. E' questo il problema che secondo me va studiato bene.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...