xamarin手写签名
需要安装nuget包:
Xamarin.Controls.SignaturePad.Forms
前台关键代码:
<Grid x:Name="LayoutRoot" Padding="12"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="12" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <ContentView Padding="1" BackgroundColor="#B8860B"> <controls:SignaturePadView x:Name="signatureView" SignatureLineColor="Transparent" PromptText="" CaptionText="" ClearText="清空" HeightRequest="100" ClearTextColor="#B8860B" BackgroundColor="#FAFAD2" /> </ContentView> <Button x:Name="btnLoad" Text="数据库最新签名" Clicked="LoadVectorClicked" HorizontalOptions="Center" VerticalOptions="End" Grid.Row="2" /> <Button x:Name="btnSaveImage" Text="保存签名" Clicked="SaveImageClicked" HorizontalOptions="End" VerticalOptions="End" Grid.Row="2" /> </Grid>
xmlns:controls="clr-namespace:SignaturePad.Forms;assembly=SignaturePad.Forms"
后台关键代码:
/// <summary> /// 从数据库加载保存的图片 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void LoadVectorClicked(object sender, EventArgs e) { var bytes = Context.TestImageEntry.OrderByDescending(r=>r.Id).FirstOrDefault().SignatureImg; var stream = new MemoryStream(bytes); mImge.Source = ImageSource.FromStream(() => stream); } private async void SaveImageClicked(object sender, EventArgs e) { bool saved; using (var bitmap = await signatureView.GetImageStreamAsync(SignatureImageFormat.Png, Color.Black, Color.White, 1f)) { saved = await OnSaveSignature(bitmap); } if (saved) await DisplayAlert("Signature Pad", "签名保存成功.", "OK"); else await DisplayAlert("Signature Pad", "签名保存失败.", "OK"); } /// <summary> /// 保存图片到数据库 /// </summary> /// <param name="bitmap"></param> /// <returns></returns> private async Task<bool> OnSaveSignature(Stream bitmap) { using MemoryStream ms = new MemoryStream(); bitmap.CopyTo(ms); Context.TestImageEntry.Add(new Models.Entity.TestImageEntry { SignatureImg = ms.ToArray() }); await Context.SaveChangesAsync(); return true; }
运行起来的效果:
参考:https://github.com/wx0322/SignaturePad (从官网fork过来的)
(完)
标签:
xamarin
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2016-04-14 dll备份注意事项