2014-02-07 67 views
0

我已經可以從我的應用程序的實際內容中獲取打印屏幕。 我選擇az UIElement(例如網格),並將其渲染爲bmp文件。使用c#在Windows Store應用程序中裁剪並保存圖像(UIElement)

但是我該如何裁剪這張圖片?代碼如下,只是裁剪失蹤。我爲Windows 8.1工作。

public async void SaveVisualElementToFile(UIElement element, StorageFile file) 
    { 
     var renderTargetBitmap = new RenderTargetBitmap(); 
     await renderTargetBitmap.RenderAsync(element); 
     var pixels = await renderTargetBitmap.GetPixelsAsync(); 

     using (IRandomAccessStream stream = await 
       file.OpenAsync(FileAccessMode.ReadWrite)) 
     { 
      var encoder = await BitmapEncoder.CreateAsync(
               BitmapEncoder.JpegEncoderId, stream); 
      byte[] bytes = pixels.ToArray(); 
      encoder.SetPixelData(BitmapPixelFormat.Bgra8, 
           BitmapAlphaMode.Ignore, 
           (uint)renderTargetBitmap.PixelWidth, 
           (uint)renderTargetBitmap.PixelHeight, 
           96, 96, bytes); 

      await encoder.FlushAsync(); 
     } 
    } 

回答

1

有幾種方法可以做到這一點。有MSFT自己支持的traditional way。您也可以使用一些擴展名,例如WinRTXamlToolkitWriteableBitmapEx。後兩個使它非常容易。在Codeplex上查看他們的源代碼,瞭解他們的示例應用程序,這些示例應用程序將提供如何使用裁剪的示例。

+0

Yaeh,yestoday我使它與WriteableBitmapEx,so thaks :) – Krekkon