(Vi) Formulario de captura de área
Cree un nuevo formulario1, guarde como captura1.pas. Establezca las cuatro propiedades del atributo Bordericons en falso.
Borderstyle está configurado en BSNone, Cursor está configurado en CrCross, FormStyle está configurado en FSStayontop.
Agregue una variable privada: fdragging: boolean;
La función de Form1: creada al agarrar el área, desaparece después de agarrar la imagen.
captura de unidad1;
interfaz
usos
Windows, mensajes, sysutils, variantes, clases, gráficos, controles, formularios,
Diálogo;
tipo
TForm1 = class (tForm)
Procedimiento formulcreate (remitente: tobject);
procedimiento FormDestrOY (remitente: tobject);
procedimiento FormPaint (remitente: tobject);
procedimiento FormMousEdown (remitente: tobject; botón: tmouseButton;
Cambio: tshiftstate;
procedimiento FormMouseMove (remitente: tobject; shift: tshiftstate; x,
Y: entero);
Procedimiento FormMouseUp (remitente: tobject; botón: tmouseButton;
Cambio: tshiftstate;
Privado
fdragging: booleano;
público
frect: trect;
FBMP: TBITMAP;
fin;
varilla
Form1: tform1;
Implementación
{$ R *.dfm}
procedimiento tForm1.FormCreate (remitente: tobject);
VAR ADC: HDC; // Tabla de descripción del dispositivo
Comenzar
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);
Liberado (0, ADC,);
SetBounds (0,0, screen.width, pantalla.Height);
fin;
procedimiento tForm1.FormDestroy (remitente: tobject);
Comenzar
FBMP.Free;
fin;
procedimiento tForm1.FormPaint (remitente: tobject);
Comenzar
Canvas.draw (0,0, FBMP);
fin;
// Si presiona el botón del mouse izquierdo, use SetRect para configurar el rectángulo frect para que sea solo un punto.
// Dibuja este rectángulo con DrawCocusrect
Procedimiento tForm1.FormMousEdown (remitente: tobject; botón: tMouseButton;
Cambio: tshiftstate;
Comenzar
if botón = mbleft entonces comienza
fdragging: = verdadero;
Setrect (frect, x, y, x, y);
Canvas.DrawFocusRect (frect);
fin;
fin;
// Cuando el mouse se mueva, determine si está en el dibujo (presione el botón del mouse izquierdo) y el dibujo de la red restablece el rectángulo
// Haga de la esquina inferior derecha la posición actual del mouse y dibuja un rectángulo al llamar a DrawCocusrect
Procedimiento tForm1.FormMouseMove (remitente: tobject; shift: tshiftState; x,
Y: entero);
Comenzar
Si fdragging entonces comienza
Canvas.DrawFocusRect (frect);
frect.right: = x;
frect.bottom: = y;
Canvas.DrawFocusRect (frect);
fin;
fin;
// juzga si está en el dibujo (presione el botón del mouse izquierdo), cuando aparece el mouse,
// DrawocusRect Restablecer el rectángulo.
procedimiento tForm1.FormMouseUp (remitente: tobject; botón: tmouseButton;
Cambio: tshiftstate;
Comenzar
Si fdragging entonces comienza
Canvas.DrawFocusRect (frect);
fdragging: = false;
fin;
ModalResult: = MROK;
fin;
fin.