By adding these lines you can export the canvas data to the server:
uses NetEncoding;
procedure TMainForm.UniButton1Click(Sender: TObject);
begin
uniSession.AddJS('ajaxRequest(MainForm.form, [''export''], { data: canvas.toDataURL() } );');
end;
procedure TMainForm.UniFormAjaxEvent(Sender: TComponent; EventName: string;
Params: TUniStrings);
var inStream, outStream:TStringStream;
begin
if sameText(eventName,'export') then
begin
inStream:=TStringStream.Create;
outStream:=TStringStream.Create;
inStream.writeString(params.Values['data']);
inStream.position:=22;
TNetEncoding.Base64.Decode(inStream, outStream);
outStream.position:=0;
uniImage1.Picture.LoadFromStream(outStream);
uniImage1.Picture.SaveToFile('image.png');
inStream.Free;
outStream.Free;
end;
end;
Update: moved beginPath and closePath to mouseDown and mouseUp, for more fluid drawing.
For clearing the canvas use:
uniSession.AddJS('ctx.clearRect(0, 0, canvas.width, canvas.height);');
mousemove_ex.zip