Windows Mobile 2003.NET CFWindows MobileVisual Studio .NET 2003.NET 1.1Visual Studio 2005.NET 2.0中级开发Visual StudioWindows.NETC#
Pocket PC 上的 Scratchpad/签名捕获为 BMP






4.71/5 (19投票s)
一种在 Pocket PC 上捕获签名或涂鸦的方法。
引言
这个控件类允许用户在 Pocket PC 上进行彩色笔记或签名,并将其保存为 BMP 文件。这段易于使用的代码可以插入任何 .NET 应用程序中以进行涂鸦。
背景
很久以前,我一直在寻找一个免费的签名控件或类似的东西,我可以在自己的应用程序中使用它,而不会用更庞大的代码来超载它。我正在寻找一些可以更改笔的颜色、宽度等的东西。在互联网知识库中,这方面的信息很少,而且大多数都不符合我的需求。后来,我考虑组装可用的代码并删除不需要的部分,并对代码进行微调以达到我的期望水平。
我想,可能有一些像我一样的人仍在寻找这种代码片段,并考虑分享它。这段代码中有些部分程序员甚至可以修改,例如使笔的宽度可更改,将图像保存为 JPG 或 GIF 等。
使用代码
将 Signature.cs 文件复制到您的任何 Pocket PC 2003 项目中。将 Panel
控件添加到可视化表单中。按照描述添加此代码,并让项目启动签名捕获功能。
这里,我添加了一个 Panel
private System.Windows.Forms.Panel pnlSignature;
private Signature cSignature;
稍后在构造函数中,或在表单的 Load
事件中,您可以添加
cSignature = new Signature();
cSignature.Location = pnlSignature.Location;
cSignature.Size = pnlSignature.Size;
this.pnlSignature.Visible = false;
this.Controls.Add(cSignature);
在任何 Button
的 Click
事件下,您可以编写此代码以使用名称将文件保存在您想要的位置
cSignature.Save(Path.Combine(AppPath, "CapturedPicture.bmp"));
类似地,您可以通过调用来更改笔的颜色
cSignature.SetPenColor(Color.Blue);
或使用以下方法加载先前保存的相同大小的图片
cSignature.LoadImage(Path.Combine(AppPath,
"PreviouslyCapturedPicture.bmp"));
提示与技巧
- 不要忘记将
Panel
的Visibility
设置为false
,因为我们需要看到控件,而不是Panel
。在这里,Panel
只是一个容器。 - 更重要的是将签名控件的大小设置为加载的图片和
Panel
的大小,否则它可能无法工作。
关注点
在处理这个问题时,我通过更改以下代码行来更改笔的宽度。显然,必须有一种比我做的更好的方法来做到这一点。
GraphicsHandle.DrawLine(SignaturePen, l.StartX+1,
l.StartY, l.EndX+1,l.EndY);
GraphicsHandle.DrawLine(SignaturePen, l.StartX,
l.StartY+1, l.EndX,l.EndY+1);
GraphicsHandle.DrawLine(SignaturePen, l.StartX+1,
l.StartY+1, l.EndX+1,l.EndY+1);
GraphicsHandle.DrawLine(SignaturePen, l.StartX,
l.StartY, l.EndX,l.EndY);