Certains logiciels de visualisation d'images couramment utilisés ont une fonction qui peut élargir les images locales.
Ajoutez deux composants Timage à la forme, avec l'un des composants Timage définis sur Image1, qui agit comme le porteur de l'affichage d'image d'origine. Un autre composant Timage a la propriété de nom définie sur Image2, qui peut afficher l'image agrandie. Le formulaire après l'ajout des composants est illustré à la figure 1.
Figure 1 Le formulaire après avoir ajouté des composants
Le noyau de cet exemple est la fonction StretchBlt, qui utilise la fonction StretchBLT pour obtenir une amplification d'image locale.
Procédure tform1.image1mousmove (expéditeur: tobject; shift: tshiftState; x, y: entier);
Commencer
Stretperblt (image2.canvas.handle, 0,0, image2.width, image2.height,
Image1.Canvas.Handle, X-20, Y-20,40,40, SRCCOPY);
Image2.refresh;
Screen.Cursors [1]: = LoadCursorFromFile ('MAGNIFY.CUR');
Self.cursor: = 1;
fin;
Le programme appellera d'abord la fonction StretchBlt, utilise la position actuelle de la souris comme point central, sélectionnez l'image locale sur le composant Image1 avec une longueur latérale de 40 et agrandissez l'image locale sur le composant Image2. Ensuite, l'affichage du composant Image2 est actualisé en appelant la méthode de rafraîchissement du composant Image2. Enfin, définissez le pointeur de la souris sur la nouvelle forme.
Le code du programme est le suivant:
unité unité 1;
interface
usages
Windows, messages, systèmes, variantes, classes, graphiques, contrôles, formulaires,
Dialogues, extctrls, stdctrls;
taper
Tform1 = classe (tform)
Image1: Timage;
Image2: Timage;
Procédure Image1MousMove (Sender: Tobject; Shift: TshiftState; X, Y: entier);
Procédure FormMouseMove (expéditeur: tobject; Maj: tShiftState; x, y: entier);
Privé
{Déclarations privées}
publique
{Déclarations publiques}
fin;
var
FORM1: TFORM1;
Mise en œuvre
{$ R * .dfm}
Procédure tform1.image1mousmove (expéditeur: tobject; shift: tshiftState; x, y: entier);
Commencer
Stretchblt (image2.canvas.handle, 0,0, image2.width, image2.height, image1.canvas.handle, x-20, y-20,40,40, srccopy);
Image2.refresh;
Screen.Cursors [1]: = LoadCursorFromFile ('MAGNIFY.CUR');
Self.cursor: = 1;
fin;
Procédure TForm1.FormMouseMove (Sender: Tobject; Shift: TshiftState; X, Y: entier);
Commencer
Screen.Cursors [1]: = Crdefault;
Self.cursor: = 1;
fin;
fin.
Enregistrez le fichier, puis appuyez sur F9 pour exécuter le programme.
Figure 2 Résultats de l'opération du programme
Le zoom dans les images est une caractéristique nécessaire d'un excellent logiciel d'observation d'images.