DELPHI de Borland Company (maintenant renommée INPRISE Company) est actuellement le programme Windows le plus pratique.
Un des outils de planification. Beaucoup de gens pensent que DELPHI apparaît comme un outil de développement de bases de données. En fait, DELPHI.
Des programmes Windows efficaces peuvent être développés à une vitesse vertigineuse.
Nous allons maintenant utiliser DELPHI pour écrire un programme pratique de copie d'écran. Regardez, la photo ci-dessous
Ceci est un exemple de copie de l'écran régional après avoir exécuté le programme programmé. Pas mal !
Les talentueux designers de Borland Company utilisent l'objet canevas (Tcanvas) pour encapsuler la plupart des graphiques dans Windows.
Fonction de sortie, qui nous permet de gérer l'écran Windows de manière plus intuitive,
Et vous n'avez pas à vous soucier du casse-tête des fonctions de l'API Windows. Le programme court suivant peut réaliser l'intégralité
L'image de l'écran est copiée.
var //déclaration de variable
Plein écran : Tbitmap ;
Plein écranCanvas : TCanvas ;
courant continu : HDC ;
//------------------------------------------------ ----------
DC := GetDC (0); //Obtenir le DC de l'écran, le paramètre 0 fait référence à l'écran
FullscreenCanvas := TCanvas.Create; //Créer un objet CANVAS
FullscreenCanvas.Handle := DC; //Attribuer le DC de l'écran à HANDLE
Plein écran.Canvas.CopyRect
(Rect (0, 0, écran.Largeur,écran.Hauteur),
plein écranCanvas,
Rect (0, 0, Écran.Largeur, Écran.Hauteur));
// Copiez tout l'écran dans BITMAP
FullscreenCanvas.Free; // Libérer l'objet CANVAS
Libérer DC (0, DC); // Libérer DC
// L'objet SCREEN est un objet écran prédéfini par DELPHI, il suffit de l'utiliser directement.
Après avoir lu le code ci-dessus, vous constaterez qu'il est en effet très simple d'écrire un programme de copie d'écran avec DELPHI.
Bien sûr, vous devez écrire un programme de copie d’écran pratique. Le code ci-dessus ne suffit pas. Parlons-en ci-dessous.
Voici les principales idées de programmation :
1. Mise en œuvre de la copie plein écran
Masquez d'abord le programme de copie d'écran et, après un certain temps, utilisez le programme ci-dessus pour réaliser une copie d'écran.
copie.
2. Mise en place d'une copie régionale
Pour réaliser une copie de zone, vous devez utiliser une petite astuce. Appelez d’abord le programme de copie plein écran pour copier la totalité de l’écran.
télécharger, puis afficher l'image copiée sur l'écran, puis permettre à l'utilisateur de
Sélectionnez la zone requise et copiez enfin la zone sélectionnée par l'utilisateur.
Mise en œuvre de la programmation :
1. Ouvrez d’abord un projet avec DELPHI3.
2. Placez un composant TPANEL sur le FORM, définissez ALIGN=ALTOP, puis sélectionnez la barre de composants ADDITIONAL.
TSCROLLBOX, placez-le sur le FORMULAIRE, définissez ALIGN=ALCLIENT, puis placez un
Objet TIMAGE.
3. Placez 4 boutons sur le PANNEAU, à savoir FULL SCREEN, REGIN, SAVE et EXIT.
4. Faites d'abord ce qui est facile à faire et écrivez le code dans l'événement CLICK du bouton EXIT.
procédure TForm1.ExitClick(Expéditeur : TObject);
commencer
fermer;
fin;
5. Ensuite, réalisez une copie plein écran. Placez une minuterie TTIMER sur FROM et réglez ENABLED sur.
FALSE, INTERVAL est réglé sur 500, ce qui signifie qu'il est activé une fois toutes les demi-secondes. Double-cliquez sur le composant TIMER et écrivez ce qui suit
code.
procédure TForm1.Timer1Timer(Expéditeur : TObject);
var
Plein écran : Tbitmap ;
Plein écranCanvas : TCanvas ;
courant continu : HDC ;
commencer
timer1.Enabled:=false; //Annuler l'horloge
Plein écran := TBitmap.Create; //Créer un BITMAP pour stocker les images
Plein écran.Width := écran.width;
Plein écran.Hauteur := écran.Hauteur;
DC := GetDC (0); //Obtenir le DC de l'écran, le paramètre 0 fait référence à l'écran
FullscreenCanvas := TCanvas.Create; //Créer un objet CANVAS
FullscreenCanvas.Handle := DC;
Plein écran.Canvas.CopyRect
(Rect (0, 0, écran.Largeur, écran.Hauteur), plein écranCanvas,
Rect (0, 0, Écran.Largeur, Écran.Hauteur));
// Copiez tout l'écran dans BITMAP
FullscreenCanvas.Free; // Libérer l'objet CANVAS
Libérer DC (0, DC); // Libérer DC
//******************************
image1.picture.Bitmap:=fullscreen;//Attribuer l'image copiée à l'objet IMAGE
image1.Width:=plein écran.Width;
image1.Hauteur :=plein écran.Hauteur ;
fullscreen.free; // Libérer le bitmap
form1.WindowState:=wsNormal; //Restaurer l'état de la fenêtre
form1.show; //Fenêtre d'affichage
messagebeep(1); //BEEP émet un bip pour signaler que l'image a été capturée.
fin;
6. Le code suivant sur le bouton FULLSCREEN est très simple.
procédure TForm1.FullscreenClick(Expéditeur : TObject);
commencer
form1.WindowState:=wsMinimized; //Réduire la fenêtre du programme
form1.hide; //Cacher le programme
timer1.enabled:=true; //Ouvre le minuteur
fin;
7. Après avoir copié l'image, il faut bien sûr la sauvegarder. Le bouton SAVE entre en jeu. Nous écrivons ce qui suit :
Téléchargez le code.
procédure TForm1.Save1Click(Expéditeur : TObject);
commencer
si enregistrédialog1.Execute alors
commencer
form1.Image1.Picture.SaveToFile(savedialog1.filename)
fin;
fin;
8. Ce qui suit est la mise en œuvre de la copie de zone. Ensuite, créez un FORMULAIRE, définissez BorderStype sur bsNone, afin qu'il puisse être affiché
Pour le plein écran, placez un composant TIMAGE dessus, définissez ALIGN sur ALCLIENT et placez un TTIMER
widget, le programme du widget TIMER est très similaire à celui ci-dessus, car la première chose qu'il doit réaliser est une copie en plein écran.
cauris.
procédure TForm2.Timer1Timer(Expéditeur : TObject);
var
Plein écran : Tbitmap ;
Plein écranCanvas : TCanvas ;
courant continu : HDC ;
commencer
timer1.Enabled:=false;
Plein écran := TBitmap.Create;
Plein écran.Width := écran.width;
Plein écran.Hauteur := écran.Hauteur;
DC := GetDC (0);
FullscreenCanvas := TCanvas.Create;
FullscreenCanvas.Handle := DC;
Plein écran.Canvas.CopyRect (Rect
(0, 0, écran.Largeur, écran.Hauteur), plein écranCanvas,
Rect (0, 0, Écran.Largeur, Écran.Hauteur));
Plein écranCanvas.Gratuit ;
LibérationDC (0, DC);
image1.picture.Bitmap:=plein écran ;
image1.Width:=plein écran.Width;
image1.Hauteur :=plein écran.Hauteur ;
plein écran.gratuit;
form2.WindowState:=wsMaximized;
form2.show;
bip de message (1);
replix:=-1;
pliable :=-1 ;
image1.Canvas.Pen.mode:=pmnot; //Le mode stylo est inversé
image1.canvas.pen.color:=clblack; //Le stylo est noir
image1.canvas.brush.Style:=bsclear; //Pinceau vierge
drapeau :=vrai ;
fin;
9. Il y a deux programmes d'événements sur le composant TIMAGE qui doivent être écrits, l'un est ONMOUSEDOWN et l'autre
C'est ONMOUSEMOVE.
10. Vous pouvez revenir sur l'idée decopie de région. À l'heure actuelle, nous l'avons déjà fait.
est obtenu et s'affiche également à l'écran. Appuyez sur le bouton gauche de la souris pour être l'origine de la zone. Puis déplacez la souris sur.
Il y a un rectangle entre l'origine et la souris. Il change lorsque la souris bouge à nouveau.
Cliquez sur le bouton gauche de la cible. A ce moment, la zone contenue par le rectangle est l'image que nous voulons obtenir.
11. MOUSEDOWN a donc deux traitements de réponse, voir la procédure suivante.
procédure TForm2.Image1MouseDown
(Expéditeur : TObject ; Bouton : TMouseButton ;
Shift : TShiftState ; X, Y : entier );
var
largeur, hauteur : entier ;
nouveau bitmap : Tbitmap ;
commencer
if (trace=false) then // TRACE indique si la souris est suivie
commencer //Cliquez sur le bouton gauche de la souris pour la première fois pour commencer à suivre la souris.
drapeau :=faux ;
avec image1.canvas faire
commencer
moveTo(foldx,0);
LineTo(foldx,écran.hauteur);
moveto(0,foldy);
lineto(screen.width,foldy);
fin;
x1 :=x ;
y1 :=y ;
vieuxx:=x;
ancien :=y ;
trace :=vrai ;
image1.Canvas.Pen.mode:=pmnot; //Le mode stylo est inversé
//Dessinez à nouveau le rectangle à l'emplacement d'origine, ce qui équivaut à effacer le rectangle.
image1.canvas.pen.color:=clblack; //Le stylo est noir
image1.canvas.brush.Style:=bsclear;//Pinceau vierge
fin
autre
start //Le deuxième clic indique que le rectangle a été obtenu.
// Copiez-le dans le composant IMAGE dans FORM1.
x2:=x;
y2:=y;
trace :=faux ;
image1.canvas.rectangle(x1,y1,oldx,oldy);
largeur:=abs(x2-x1);
hauteur :=abs(y2-y1);
form1.image1.Width:=Largeur;
form1.image1.Hauteur :=Hauteur ;
newbitmap:=Tbitmap.create;
newbitmap.width:=largeur;
newbitmap.height:=hauteur;
nouveaubitmap.Canvas.CopyRect
(Rect (0, 0, largeur, hauteur), form2.image1.canvas,
Rect (x1, y1,x2,y2)); //Copier
form1.image1.picture.bitmap:=newbitmap; //Mettez-le sur l'IMAGE du FORMULAIRE
newbitmap.free;
form2.hide;
form1.show;
fin;
fin;
12. Le traitement de MOUSEMOVE consiste à dessiner et effacer en continu des rectangles entre l'origine et la position actuelle de la souris.
Sauf rectangle.
procédure TForm2.Image1MouseMove
(Expéditeur : TObject ; Shift : TShiftState ; X,
Y : Entier) ;
commencer
if trace=true then //Suivez-vous la souris ?
start //Oui, efface l'ancien rectangle et dessine-en un nouveau
avec image1.canvas faire
commencer
rectangle(x1,y1,oldx,oldy);
Rectangle(x1,y1,x,y);
vieuxx:=x;
ancien :=y ;
fin;
fin
sinon si flag=true then //Dessine une croix là où se trouve la souris
commencer
avec image1.canvas faire
commencer
moveTo(foldx,0); //Effacer l'ancienne croix
LineTo(foldx,écran.hauteur);
moveto(0,foldy);
lineto(screen.width,foldy);
moveTo(x,0); //Dessine une nouvelle croix
LineTo(x,écran.hauteur);
moveto(0,y);
lineto(screen.width,y);
replix:=x;
pliable :=y ;
fin;
fin;
fin;
13. Bon, revenons à l'écriture du code du bouton REGION.
procédure TForm1.RegionClick(Expéditeur : TObject);
commencer
form1.Hide;
form2.hide;
form2.Timer1.Enabled:=true;
fin;
D'accord, nous l'avons enfin terminé avec succès. Relançons-le et copions le bel écran ! Regarder
DELPHI est non seulement un excellent outil de développement de bases de données, mais également un excellent outil d'écriture de WINDOWS.
Une bonne aide pour le programme. Ne nous empêchons pas d'admirer : Superbe DELPHI !
Jia Xuejie, Youhe Lane, ville de Ningbo