使用c#with在Windows应用商店应用中裁剪并保存图像(UIElement)

时间:2014-02-07 23:46:18

标签: c# .net image windows-store-apps crop

我已经可以从我的应用程序的实际内容中获取打印屏幕。 我选择az UIElement(例如网格),然后将其渲染为bmp文件。

但我怎么能像我一样裁剪这张图片呢? 代码低于作品,只是裁剪缺失。我在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 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。 MSFT自己支持traditional way。您还可以使用某些扩展程序,例如WinRTXamlToolkitWriteableBitmapEx。后两者使它变得非常容易。在Codeplex上查看他们的源代码,了解他们的示例应用程序,这些应用程序将提供有关如何使用裁剪的示例。