(Vi) Formulaire de capture de zone
Créez un nouveau formulaire1, enregistrez-vous en capture1.pas. Définissez les quatre propriétés de l'attribut BorderICONS sur FALSE.
Borderstyle est défini sur BSNone, le curseur est défini sur Crcross, FormStyle est défini sur fsstayontop.
Ajouter une variable privée: FDragging: Boolean; deux variables publiques: Frect: Trect, FBMP: TBITMAP;
La fonction de Form1: Créé lors de la saisie de la zone disparaît après avoir saisi l'image.
Capture unitaire1;
interface
usages
Windows, messages, systèmes, variantes, classes, graphiques, contrôles, formulaires,
Dialogues;
taper
Tform1 = classe (tform)
Procédure FormCreate (expéditeur: tobject);
Procédure FormDestroy (expéditeur: tobject);
Procédure FormPaint (expéditeur: tobject);
Procédure FormMousDown (expéditeur: tobject; bouton: tmouseButton;
Shift: tshiftstate; x, y: entier);
Procédure FormMouseMove (expéditeur: TOBject; Shift: TshiftState; x,
Y: entier);
Procédure FormMouseUp (expéditeur: tobject; bouton: tmouseButton;
Shift: tshiftstate; x, y: entier);
Privé
fdragging: booléen;
publique
Frect: Trect;
FBMP: tbitmap;
fin;
var
FORM1: TFORM1;
Mise en œuvre
{$ R * .dfm}
Procédure TForm1.FormCreate (Sender: Tobject);
VAR ADC: HDC;
Commencer
fbmp: = tbitmap.create;
fbmp.width: = Screen.Width;
fbmp.height: = screen.height;
ADC: = Getdc (0);
Bitblt (fbmp.canvas.handle, 0,0, screen.width, screen.height, adc, 0,0, srccopy);
Libéré (0, ADC,);
SetBounds (0,0, écran.Width, Screen.Height);
fin;
Procédure tform1.formDestroy (expéditeur: tobject);
Commencer
fbmp.free;
fin;
procédure tform1.formpaint (expéditeur: tobject);
Commencer
Canvas.Draw (0,0, FBMP);
fin;
// Si vous appuyez sur le bouton gauche de la souris, utilisez SETRERCT pour définir le rectangle Frect afin qu'il ne soit qu'un point.
// dessinez ce rectangle avec un trawfocusrect
Procédure TForm1.FormmousDown (Sender: Tobject; Bouton: TMouseButton;
Shift: tshiftstate; x, y: entier);
Commencer
Si bouton = mbleft alors commencez
fdragging: = true;
SetRect (Frect, x, y, x, y);
Canvas.Drawfocusrect (Frect);
fin;
fin;
// Lorsque la souris se déplace, déterminez s'il est dans le dessin (appuyez sur le bouton gauche de la souris) et DrawFocusrect réinitialise le rectangle
// faire du coin inférieur droit la position actuelle de la souris et dessiner un rectangle lors de l'appel de drawfocusrect
procédure tform1.formMouseMove (expéditeur: tobject; shift: tshiftState; x,
Y: entier);
Commencer
Si fdragging alors commencez
Canvas.Drawfocusrect (Frect);
Frect.Right: = x;
frect.bottom: = y;
Canvas.Drawfocusrect (Frect);
fin;
fin;
// juger si c'est dans le dessin (appuyez sur le bouton gauche de la souris), lorsque la souris apparaît,
// DrawFocusrect Réinitialise le rectangle.
Procédure tform1.formMouseUp (expéditeur: tobject; bouton: tmouseButton;
Shift: tshiftstate; x, y: entier);
Commencer
Si fdragging alors commencez
Canvas.Drawfocusrect (Frect);
fdragging: = false;
fin;
ModalResult: = MROK;
fin;
fin.