2014-03-25 41 views
0

您好我已經創建了一個Silverlight應用程序,允許用戶輸入他們的名字,選擇日期並簽名(簽名條)。我正在尋找添加到我已經創建的webform。我使用Silverlight中的borderInk和inkP工具在網格上構建簽名條。但是我不知道如何保存圖像。我想將它存儲在一個數據庫中,我已經創建了。我也想附加silverlight應用程序我創建的webforms。有關如何做到這一點的任何幫助?如何在Silverlight中保存圖像

回答

0

你應該使你的繪圖表面元素(網格)的位圖,並保存結果。

採樣方法,它應該得到一個元素,並返回JPEG圖像

private byte[] RenderToJpeg(FrameworkElement element) 
{ 
    using (var stream = new MemoryStream()) 
    { 
     var bmp = new WriteableBitmap(element, null); 
     bmp.SaveJpeg(stream, bmp.PixelWidth, bmp.PixelHeight, 0, 90); 

     stream.Flush(); 
     return stream.ToArray(); 
    } 
} 
+0

WriteableBitmap的沒有一個SaveJpeg方法在Silverlight 5中。 –

0

如果您正在使用OpenFileDialog保存圖像,這樣可以幫助你的字節。

decimal _imagementSize = 0; 
string _imageName = ""; 
string _imageType = ""; 
Binary _image; 
OpenFileDialog dialog=new OpenFileDialog(); 

private void btnSaveImage_Click(object sender, RoutedEventArgs e) 
{ 
    dialog.Multiselect = false; 
    dialog.Filter = "All Files | *.*"; 
    if (dialog.ShowDialog() == true) 
    { 
     bool fileExist = dialog.File.Exists; 
     if (fileExist) 
     {  
      UploadFile();  
     }     
    } 
} 

private void UploadFile() 
{ 
    double fileLength = 0; 
    var stream = dialog.File.OpenRead(); 
    var bnr = new BinaryReader(stream); 
    byte[] buffer = new byte[stream.Length + 1]; 
    buffer = bnr.ReadBytes((int)stream.Length); 
    fileLength = stream.Length; 
    _imageName = dialog.File.Name; 
    _imageType = dialog.File.Extension; 
    _imageSize = (decimal)(fileLength/1024); 
    _image = new Binary() { Bytes = buffer };   
} 

,如果你正在使用WCF service保存圖像,您只需發送_image

WCF method

[OperationContract] 
public void SaveImage(System.Data.Linq.Binary _image) 
{ 
    //save image to DB or enything 
}