paint delphi 7 para capturar assinatura de usuário

Delphi

11/03/2024

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.
Felipe

Felipe

Curtidas 0

Respostas

Arthur Heinrich

Arthur Heinrich

11/03/2024

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.
GOSTEI 0
POSTAR