我的要求是需要使用InkPresenter捕获用户签名... 然后需要将inkpresenter数据转换为base64字符串..
xaml中的我的Inkpresenter
<InkPresenter x:Name="inkSignature" Height="428" Width="450"
MouseLeftButtonDown="MyIP_MouseLeftButtonDown"
LostMouseCapture="MyIP_LostMouseCapture"
MouseMove="MyIP_MouseMove"
Background="White" Canvas.Top="53" Canvas.Left="3" Opacity="1" >
</InkPresenter>
单击Proceedbutton ..i需要捕获Inkpresenter内容并保存到base64字符串..
我实施的逻辑..
private void ProceedClick(object sender, RoutedEventArgs e)
{
WriteableBitmap wbBitmap = new WriteableBitmap(inkSignature, new TranslateTransform());
EditableImage eiImage = new EditableImage(wbBitmap.PixelWidth, wbBitmap.PixelHeight);
try
{
for (int y = 0; y < wbBitmap.PixelHeight; ++y)
{
for (int x = 0; x < wbBitmap.PixelWidth; ++x)
{
int pixel = wbBitmap.Pixels[wbBitmap.PixelWidth * y + x];
eiImage.SetPixel(x, y,
(byte)((pixel >> 16) & 0xFF),
(byte)((pixel >> 8) & 0xFF),
(byte)(pixel & 0xFF), (byte)((pixel >> 24) & 0xFF)
);
}
}
}
catch (System.Security.SecurityException)
{
throw new Exception("Cannot print images from other domains");
}
// Save it isolated storage
Stream streamPNG = eiImage.GetStream();
StreamReader srPNG = new StreamReader(streamPNG);
byte[] baBinaryData = new Byte[streamPNG.Length];
long bytesRead = streamPNG.Read(baBinaryData, 0, (int)streamPNG.Length);
//Obtain a virtual store for application
IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream isfStream = new IsolatedStorageFileStream(ClsCommon.signImage, FileMode.Create, fileStorage);
isfStream.Write(baBinaryData, 0, baBinaryData.Length);
isfStream.Close();
MessageBox.Show("Your signature has been saved. Thank you !", "mPOS", MessageBoxButton.OK);
ConvImagetoBase64();
// this.NavigationService.GoBack();
}
public void ConvImagetoBase64()
{
byte[] data;
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
if (store.FileExists(ClsCommon.signImage))
{
using (IsolatedStorageFileStream isfs = store.OpenFile(ClsCommon.signImage, FileMode.Open, FileAccess.Read))
{
// Allocate an array large enough for the entire file
data = new byte[isfs.Length];
// Read the entire file and then close it
isfs.Read(data, 0, data.Length);
isfs.Close();
}
// Create memory stream and bitmap
MemoryStream ms = new MemoryStream(data);
BitmapImage bi = new BitmapImage();
byte[] bytearray = null;
bytearray = ms.ToArray();
string result= Convert.ToBase64String(bytearray);
}
}
}
在String结果值=调试时 ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////////////////////////////// XKZ / / 8AAP // // AAD T / F / v ///////////////////////////////////// + 19F + / WUF // // 8AAP AAD // qOj / v的//////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// /////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////// VV7 / v8AAP // // AAD WAA // 77 + / 7 /////////// /////////////////////////// 0VF // // 8AAP AAD // Z09 ///////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// //////////////////////
很多这个......终于以 / zOLXCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
我的错误是什么......请指导我重新制作这个......
如果您有任何其他简单的方法,请建议....