paint delphi 7 para capturar assinatura de usuário
11/03/2024
0
bom dia meu amigo!
estou procurando um script para que o sistema capturar a assinatura do usuário.
encontrei seu script:
https://www.devmedia.com.br/desenhando-paintbox-delphi/18152
e parabéns! funciona como mencionado no link.
inseri desta forma:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ( GetAsyncKeyState( VK_LBUTTON ) and KF_UP ) > 0 then //indentifica se botao esquerdo foi pressionado para iniciar o desenho
begin
i := High(FPosicoes)+1;
SetLength(FPosicoes, i+1);
FPosicoes[contmatriz].x := x;
FPosicoes[contmatriz].y := y;
PaintBox1.Invalidate;
end ;
end;
entretanto, quando o usuário assinar, ele pode retirar a ponta da caneta várias vezes.
Seu script, quando isso é feito, ele cria um risco e une a linha anterior com a nova escrita.
haveria possibilidade do usuário retirar a colocar a caneta na mesa vária vezes de forma que não haja esta junção?
se puder me ajudar, fico muito agradecido.
att.
Evandro.
estou procurando um script para que o sistema capturar a assinatura do usuário.
encontrei seu script:
https://www.devmedia.com.br/desenhando-paintbox-delphi/18152
e parabéns! funciona como mencionado no link.
inseri desta forma:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ( GetAsyncKeyState( VK_LBUTTON ) and KF_UP ) > 0 then //indentifica se botao esquerdo foi pressionado para iniciar o desenho
begin
i := High(FPosicoes)+1;
SetLength(FPosicoes, i+1);
FPosicoes[contmatriz].x := x;
FPosicoes[contmatriz].y := y;
PaintBox1.Invalidate;
end ;
end;
entretanto, quando o usuário assinar, ele pode retirar a ponta da caneta várias vezes.
Seu script, quando isso é feito, ele cria um risco e une a linha anterior com a nova escrita.
haveria possibilidade do usuário retirar a colocar a caneta na mesa vária vezes de forma que não haja esta junção?
se puder me ajudar, fico muito agradecido.
att.
Evandro.
Felipe
Curtir tópico
+ 0
Responder
Posts
11/03/2024
Arthur Heinrich
Você pode modificar seu array, para armazenar o movimento usando, não só a posição, mas a indicação de que se tratava de movimento ou linha.
Use o OnMouseDown para registrar o ponto inicial, como ('M', X, Y) e setando o flag para indicar que está desenhando.
No evento OnMouseMove, se estiver desenhando, registra o ponto como ('L', X, Y).
No evento OnMouseUp, se está desenhando, acrescenta o ponto ('L',X,Y) e desliga o flag que indica que está desenhando. Desta forma, não registra os movimentos com a "caneta" levantada.
Aí, você vai registrar sequências de movimentos: (M, L, L, L, ..., L), (M, L, L, L, ..., L), ...
Na hora de plotar,
if (FPosicoes[i].Movimento='M')
then Canvas.MoveTo(X,Y)
else Canvas.LineTo(X,Y);
Também pode chamar a procedure Capture, no evento OnMouseDown, que captura o movimento do mouse mesmo que ele saia de cima do componente.
No evento OnMouseUp, utilize o ReleaseCapture, para liberar o mouse.
Use o OnMouseDown para registrar o ponto inicial, como ('M', X, Y) e setando o flag para indicar que está desenhando.
No evento OnMouseMove, se estiver desenhando, registra o ponto como ('L', X, Y).
No evento OnMouseUp, se está desenhando, acrescenta o ponto ('L',X,Y) e desliga o flag que indica que está desenhando. Desta forma, não registra os movimentos com a "caneta" levantada.
Aí, você vai registrar sequências de movimentos: (M, L, L, L, ..., L), (M, L, L, L, ..., L), ...
Na hora de plotar,
if (FPosicoes[i].Movimento='M')
then Canvas.MoveTo(X,Y)
else Canvas.LineTo(X,Y);
Também pode chamar a procedure Capture, no evento OnMouseDown, que captura o movimento do mouse mesmo que ele saia de cima do componente.
No evento OnMouseUp, utilize o ReleaseCapture, para liberar o mouse.
Responder
Clique aqui para fazer login e interagir na Comunidade :)