(Vi) Formulário de captura de área
Crie um novo Form1, salve como Capture1.Pas. Defina as quatro propriedades do atributo Bordericons como FALSE.
O BordersTyle está definido como BSNONE, o cursor está definido como CRCROSS, FORMSTYLE é definido como FSSTAYONTOP.
Adicione uma variável privada: fdragging: boolean;
A função do Form1: criada ao pegar a área desaparece depois de pegar a imagem.
Captura da unidade1;
interface
usos
Janelas, mensagens, sysutils, variantes, classes, gráficos, controles, formulários,
Diálogos;
tipo
Tform1 = classe (tform)
Procedimento FormCreate (remetente: Tobject);
procedimento formDestroy (remetente: tabjas);
Procedimento FormPaint (remetente: Tobject);
procedimento formmousedown (remetente: tabject; botão: tmouseButton;
Turno: tshiftState;
Procedimento formmouseMove (remetente: Tobject; Shift: TSHIFTSTATE; X,
Y: número inteiro);
procedimento formmouseup (remetente: tabject; botão: tmouseButton;
Turno: tshiftState;
Privado
fdragging: booleano;
público
FRECT: TRECT;
FBMP: TBITMAP;
fim;
var
Form1: TForm1;
Implementação
{$ R *.dfm}
procedimento TForm1.FormCreate (remetente: Tobject);
var adc: hdc;
Começar
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);
Lançou -se (0, ADC);
Setbounds (0,0, screen.width, screen.height);
fim;
procedimento TFFORM1.FORMDESTROY (remetente: Tobject);
Começar
fbmp.free;
fim;
procedimento TForm1.FormPaint (remetente: Tobject);
Começar
Canvas.draw (0,0, FBMP);
fim;
// Se você pressionar o botão esquerdo do mouse, use o setRect para definir o retângulo Frect para que seja apenas um ponto.
// desenhe este retângulo com drawfocusrect
Procedimento TForm1.FormMouseDown (remetente: TOBJECT; Button: TmouseButton;
Turno: tshiftState;
Começar
Se botão = mbleft, então comece
fdragging: = true;
Setecrect (FRECT, X, Y, X, Y);
Canvas.drawfocusrect (FRECT);
fim;
fim;
// Quando o mouse estiver se movendo, determine se está no desenho (pressione o botão esquerdo do mouse) e drawFocusRect redefine o retângulo
// Faça o canto inferior direito a posição atual do mouse e desenhe um retângulo ao chamar drawfocusrect
Procedimento TForm1.FormMouSEMove (remetente: Tobject; Shift: TSHIFTSTATE; X,
Y: número inteiro);
Começar
Se fdragging então comece
Canvas.drawfocusrect (FRECT);
frect.right: = x;
frect.bottom: = y;
Canvas.drawfocusrect (FRECT);
fim;
fim;
// julga se está no desenho (pressione o botão esquerdo do mouse), quando o mouse aparecer,
// DrawFocusRect Redefinir o retângulo
Procedimento TForm1.FormMouseUp (remetente: Tobject; Button: TmouseButton;
Turno: tshiftState;
Começar
Se fdragging então comece
Canvas.drawfocusrect (FRECT);
fdragging: = false;
fim;
ModalResult: = Mrok; // Fechar o formulário
fim;
fim.