Bonjour à tous,je voudrai savoir comment est il possible de réaliser un zoom sur une image (affichée dans un Timage),Merci.
Bonjour à tous,je voudrai savoir comment est il possible de réaliser un zoom sur une image (affichée dans un Timage),Merci.
voici le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 function TForm1.GetZoomRect: TRect; const T:array[-5..5] of Single=(0.1,0.2,0.3,0.5,0.75,1,1.5,2,3,5,10); begin Result.TopLeft:=Point(0,0); Result.Right:=Round(FSrcBitmap.Width*T[TrackBar1.Position]); Result.Bottom:=Round(FSrcBitmap.Height*T[TrackBar1.Position]); end; procedure TForm1.FormCreate(Sender: TObject); begin FSrcBitmap:=TBitmap.Create; FSrcBitmap.LoadFromFile({path}); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin FSrcBitmap.Free; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin img1.Canvas.StretchDraw(GetZoomRect,FSrcBitmap); end;
merci pour votre reponse mais je n'ai pas trés bien saisi ce bout de code...existe t il une fonction qui permet de faire un zoom sur un timage??
je vous rassure j'ai cherché sur l'aide mais je n'ai rien trouvé :-(
Bonjour,
... dans la procedure TForm1.FormCreate(Sender: TObject) on crée le BitMap (support invisible mémorisant un dessin ou d'une photo) nommé FSrcBitmap qu'on charge depuis le disque avec FSrcBitmap.LoadFromFile(c:\...\'monFichier.bmp');je n'ai pas trés bien saisi ce bout de code
... et dans la procedure TForm1.TrackBar1Change(Sender: TObject) l'instruction img1.Canvas.StretchDraw(GetZoomRect,FSrcBitmap) dessine dans le TImage le Bitmap précédent FSrcBitmap ramené à l'échelle (StretchDraw) du rectangle GetZoomRect obtenu avec la function TForm1.GetZoomRect: TRect en fonction de la TrackBar1.Position.
... et avec la procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction) on libère la mémoire correspondante avec FSrcBitmap.Free.
... je n'ai jamais vu une telle fonction dans l'Aide Delphi, mais il n'y a pas de raison que le code fourni par J_apprenti ne marcherait pas : suffit de l'essayer il n'est pas long.je vous rassure j'ai cherché sur l'aide mais je n'ai rien trouvé
A+
Salut.
tu dois faire une copie de l'image deja afficher dans Timage comme un TBitmap pour se servir de la methode StretchDraw du canvas du Bitmap, ensuite faire le traitement en memoir sur ton bitmap puis afficher le resultat dans timage
je crois qu'une autre source pourra bien t'aider
Petit utilitaire de traitement d'image JPEG realisè par mr Sub0
Zoom, luminosité, contraste, flou gaussien, qualité JPEG, prévisualisation et sauvegarde.
Enregistrement des paramètres de l'appli dans un fichier INI...
Merci pour l'utilitaire,il regroupe une grande partie de ce que je veux réaliser ,me reste plus qu'à le comprendre
Merci Gilbert Geyer pour les explications,ça devient plus clair dans ma tête
Salut!
Pour info, je possède un code pour effectuer un zoom avec un filtre anti-aliasing (comme dans l'aperçu de windows) ce qui permet d'obtenir une qualité d'image supérieure à la méthode stretch :
http://sub0.developpez.com/delphi/AAlias.zip
Merci SubZero pour ce petit utilitaire,il est super mais je ne trouve pas le code pour le zoom la dedans
Il s'agit de la fonction Stretch32 de l'unité Transforms.pas. Tu trouveras un exemple d'utilisation de cette fonction dans l'unité Unit1.pas... Pour info, le redimensionnement avec filtre anti-aliasing nécessite plus de ressources qu'un simple stretchdraw et ce filtre est surtout utile pour réduire les images, plus que pour les grossir...
Dans mon jeu d'échecs, lorsqu'on redimensionne la fenêtre, j'utilise un simple StretchDraw puis j'ajoute le filtre anti-aliasing lorsqu'on relache le bouton de la souris. Cette démo te permettra de bien visualiser la différence entre les 2 méthodes de redimensionnement d'images...
c'est peut-être un peu tard pour dire cela mais il existe un bon composant Zoom dans la JVCL
Pour un tit editeur d'image perso, j'utilise un TImage avec les property : Center/Stretch/Proportional a true et je joue sur le Width/Height .....
Si tu souhaite faire de la qualité, passe par l'unitee ALGraphic (a dl sur le net) pour copier de maniere lissée.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager