@page "/Signature" @using Ril.BlazorSignatureCanvas @using SkiaSharp @inject IDIS_Service service 在线签名 我们把签名写入标识中,用于其他应用通过解析标识,获取来自边缘终端的签名 清除签名 保存签名 @message @code { private string handle { get; set; } = string.Empty; string type { get; set; } = "signature"; SignatureCanvas signatureCanvas { get; set; } private string message { get; set; } = "等待注册中"; private Severity severity { get; set; } = Severity.Normal; protected override void OnAfterRender(bool firstRender) { if(!firstRender)return; { if(BITKit.Data.TryGetValue("Signature.DefaultHandle",out var value)) { handle = value; } } { if(BITKit.Data.TryGetValue("Signature.DefaultType",out var value)) { type = value; } } StateHasChanged(); } async Task HandleClear() { await signatureCanvas.Clear(); } async Task HandleSave() { message = "正在更新标识"; severity = Severity.Normal; await InvokeAsync(StateHasChanged); using var bitmap = SKBitmap.Decode(await signatureCanvas.ToByteArray()); using var signBitMap = SKBitmap.Decode(await signatureCanvas.ToByteArray()); using var canvas = new SKCanvas(bitmap); canvas.Clear(SKColors.White); canvas.DrawBitmap(signBitMap, new SKPoint()); using var rotatedData = bitmap.Encode(SKEncodedImageFormat.Png, 40); using var newMs = new MemoryStream(); rotatedData.SaveTo(newMs); var data = Convert.ToBase64String(newMs.ToArray()); data = "data:image/png;base64," + data; try { await service.UpdateAsync(handle,new Dictionary() { {type,data}, }); message = "更新成功"; severity = Severity.Success; } catch (Exception e) { message = e.Message; severity = Severity.Error; } await InvokeAsync(StateHasChanged); } }