65.9K
CodeProject 正在变化。 阅读更多。
Home

Pocket PC 上的 Scratchpad/签名捕获为 BMP

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.71/5 (19投票s)

2006年1月27日

CPOL

2分钟阅读

viewsIcon

194910

downloadIcon

2882

一种在 Pocket PC 上捕获签名或涂鸦的方法。

Sample Image - SignaturePPC02.gif Sample Image - SignaturePPC02.gif

Sample Image - SignaturePPC02.gif

引言

这个控件类允许用户在 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);

在任何 ButtonClick 事件下,您可以编写此代码以使用名称将文件保存在您想要的位置

cSignature.Save(Path.Combine(AppPath, "CapturedPicture.bmp"));

类似地,您可以通过调用来更改笔的颜色

cSignature.SetPenColor(Color.Blue);

或使用以下方法加载先前保存的相同大小的图片

cSignature.LoadImage(Path.Combine(AppPath, 
        "PreviouslyCapturedPicture.bmp"));

提示与技巧

  1. 不要忘记将 PanelVisibility 设置为 false,因为我们需要看到控件,而不是 Panel。在这里,Panel 只是一个容器。
  2. 更重要的是将签名控件的大小设置为加载的图片和 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);
© . All rights reserved.