@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);
}
}