windows phone 手机截图

  无聊在商城找了一款小游戏玩,看到一个截屏功能,就google了一下具体实现,还是比较简单的,主要是靠WriteableBitmap(提供一个可写入并可更新的 BitmapSource)类实现。看一下msdn的介绍

生成从任何 UIElement 开始的可视化树的位图快照

·使用 WriteableBitmap.WriteableBitmap 构造 WriteableBitmap。

·若要在 UI 中显示图像,请将 WriteableBitmap 用作图像处理控件(如 Image)的源,或用作 ImageBrush 的源图像。

·如果您希望多次呈现此位图,并为其他快照重新使用该实例,请使用 Render 方法。 需要在 Render 后调用 Invalidate,以便呈现新图像。

·可以通过将转换传递给构造函数,或通过传递标识转换或 null 取消任何转换保留 UIElement 上的任何现有 RenderTransform。

代码实现比较简单

WriteableBitmap wBitmap = new WriteableBitmap((int)this.ActualWidth,(int)this.ActualHeight);
wBitmap.Render(LayoutRoot, new MatrixTransform());//UIElement参数用来指出要绘制的元素,Transform参数用来在绘制成位图前的变换
wBitmap.Invalidate();//强制它重绘其内容并正确显示
img.Source = wBitmap;

//真机测试代码,写入到媒体库
//using (MemoryStream stream = new MemoryStream())
//{     
//    WriteableBitmap对象进行编码,设置宽和高写入到jpg流中   
//    wBitmap.SaveJpeg(stream, wBitmap.PixelWidth, wBitmap.PixelHeight, 0, 100);
//    stream.Seek(0, SeekOrigin.Begin);
//    new MediaLibrary().SavePicture("应用截图.jpg", stream); //MediaLibrary对象提供设备媒体库的访问(音乐,图片等)
原文地址:https://www.cnblogs.com/my-tzc/p/3221687.html