是否有任何能够在Windows 8.1移动设备上签名文档的能力?像用户可以用手或手写笔绘制签名的画布。是否有任何XAML控制这个任务或其他东西?通用Windows 8.1中的用户签名应用程序
0
A
回答
0
我一直在为这一天的最好的一段而努力。看来,内置墨曾经是在Windows Phone 7和8.0可被拉出8.1
我使用的技术在文章中通过克里斯W¯¯指出,以使该可控制控制添加到页面的XAML并处理其他所有内容。
神奇的是在WritableBitmap和PointerPressed和PointerMoved方法中。
using Windows.Foundation;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Media.Imaging;
namespace ProofOfConcept.App.Controls
{
public class SignatureCaptureControl : Canvas
{
private WriteableBitmap _writeableBitmap;
private Point _currentPoint;
private Point _oldPoint;
public SignatureCaptureControl()
{
_writeableBitmap = new WriteableBitmap(300, 130);
PointerPressed += SignatureCaptureControl_PointerPressed;
PointerMoved += SignatureCaptureControl_PointerMoved;
}
private void SignatureCaptureControl_PointerPressed(object sender, PointerRoutedEventArgs e)
{
_currentPoint = e.GetCurrentPoint(this).Position;
_oldPoint = _currentPoint;
}
void SignatureCaptureControl_PointerMoved(object sender, PointerRoutedEventArgs e)
{
_currentPoint = e.GetCurrentPoint(this).Position;
_writeableBitmap.DrawLine((int)_currentPoint.X, (int)_currentPoint.Y, (int)_oldPoint.X, (int)_oldPoint.Y, PenColor);
this.InvalidateArrange();
_oldPoint = _currentPoint;
}
public void ClearSignature()
{
_writeableBitmap.Clear();
}
}
}
使用下面所述的控制将显示一个300x130白盒作为手指或指示笔拖过它,这将画线。
<Border Background="White">
<controls:SignatureCaptureControl Height="130" Width="300"/>
</Border>
要获得的图像出我们必须提取从WritableBitmap的像素数据,然后对其进行编码为位图/ GIF/JPEG/PNG /等。
public Task<byte[]> ReadAsPngImageAsync()
{
return ReadImageFromWritableBitmapAsync(_writeableBitmap, Windows.Graphics.Imaging.BitmapEncoder.PngEncoderId);
}
internal static async Task<byte[]> ReadImageFromWritableBitmapAsync(Windows.UI.Xaml.Media.Imaging.WriteableBitmap writeableBitmap, Guid encoderId)
{
var rawPixels = await ConvertBitmapToByteArrayAsync(writeableBitmap);
var encodedPixels = await EncodePixels(rawPixels, encoderId, (uint)writeableBitmap.PixelWidth, (uint)writeableBitmap.PixelHeight);
return encodedPixels;
}
private static async Task<byte[]> ConvertBitmapToByteArrayAsync(Windows.UI.Xaml.Media.Imaging.WriteableBitmap bitmap)
{
using (var stream = bitmap.PixelBuffer.AsStream())
{
var pixels = new byte[(uint)stream.Length];
await stream.ReadAsync(pixels, 0, pixels.Length);
return pixels;
}
}
private static async Task<byte[]> EncodePixels(byte[] signaturePixels, Guid encoderId, uint pixelWidth, uint pixelHeight)
{
using (var randomAccessStream = new Windows.Storage.Streams.InMemoryRandomAccessStream())
{
var encoder = await Windows.Graphics.Imaging.BitmapEncoder.CreateAsync(encoderId, randomAccessStream);
encoder.SetPixelData(Windows.Graphics.Imaging.BitmapPixelFormat.Bgra8, Windows.Graphics.Imaging.BitmapAlphaMode.Premultiplied,
pixelWidth, pixelHeight,
96, 96, signaturePixels);
await encoder.FlushAsync();
using (var stream = randomAccessStream.GetInputStreamAt(0))
{
var pixels = new byte[(uint)randomAccessStream.Size];
stream.AsStreamForRead().Read(pixels, 0, pixels.Length);
return pixels;
}
}
}
现在我们有了代表以标准形式的图像,我们可以简单地将数据保存到本地存储或提交到服务的字节数组。
+0
嗨,你好,你有一个项目以控制为例?谢谢 – Juan 2015-07-16 15:17:30
相关问题
- 1. Windows Phone 8.1应用签名
- 2. Windows 8.1通用应用程序参考
- 3. Windows Phone 8.1到通用应用程序
- 4. Windows 8.1通用应用程序文档
- 5. 开始应用商店 - 用于Windows Phone 8.1和Windows 8.1应用程序的通用应用程序
- 6. 为Windows 8.1开发适用于Windows 8.1的通用应用程序
- 7. Windows 8.1中的通用应用程序的WebClient替代
- 8. ApplicationData.ClearAsync()在Windows 8.1中不起作用通用应用程序
- 9. Cocos2dx中的PubCenter/Admob C++ Windows 8.1通用应用程序
- 10. Windows 10中的通用应用程序8.1
- 11. 在Windows Phone 8.1中获取用户数据通用应用程序
- 12. 在Windows Phone 8.1通用应用程序中设置起始页
- 13. RegionInfo在Windows 8.1的应用程序
- 14. 使用Windows Store应用程序创建新的Windows 8/8.1用户
- 15. 用于开发Windows Phone 8.1和通用Windows应用程序的环境
- 16. 交互式MapIcon,Windows Phone 8.1通用应用程序
- 17. Facebook集成在Windows 8.1通用应用程序
- 18. 如何在Windows Phone 8.1中更改应用程序名称?
- 19. Windows通用应用程序 - 适用于Windows 8.1的应用程序内产品无效
- 20. 部署Windows 8.1商店应用程序
- 21. Windows 8.1应用程序离线登录
- 22. PDF生成在Windows应用程序8.1
- 23. 暂停应用程序Windows Phone 8.1
- 24. kernel32.dll在Windows Phone 8.1应用程序中缺失通过NHunspell
- 25. 适用于Windows 8.1的安装程序商店应用程序
- 26. 中心应用程序:Windows 8.1中 - 中科引用文本1
- 27. 如何隐藏Windows Phone 8.1(WinJS)应用程序中的应用程序栏?
- 28. Windows通用应用程序中的TaskbarItemInfo
- 29. 在Windows 8.1通用应用程序启动时加载xml文件通用应用程序
- 30. Windows应用程序签署
听起来像你正在寻找[这样的事情](http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh974457.aspx) – 2014-12-02 17:12:22