【转载】WP7的应用截图

很多时候,你要考虑应用程序的页面截图。 可以有多种原因。 例如,你可以使用这个beta测试提供了一个简单的反馈方法。 我觉得这是超级宝贵的集成在一个应用程序的设计工作时,用户可以采取快速截图,将它们附加到电子邮件,并直接从Windows电话设备发送给我。 然而,同样的机制也可以被用来提供截图是应用程序的功能,例如,如果用户要保存他的应用程序的当前状态等

注意事项

注意以下几点:

  • 代码需要一个XNA库保存图片到媒体库。 有此问题,请按照下列步骤:
    • 在您的应用程序(或类库),添加到Microsoft.Xna.Framework的参考。
    • 在您的代码,添加了“使用”的声明Microsoft.Xna.Framework.Media。
    • 在属性文件夹,打开WMAppManifest.xml,并添加了以下功能:ID_CAP_MEDIALIB。
  • 如果设备连接PC上的Zune应用程序的方法调用将失败,异常。 为了避免这种情况,无论是断开的设备进行测试时,或结束在PC上的Zune应用。
  • 在模拟器上的方法调用而不会失败,有没有办法访问媒体库,所以在这个平台上,它几乎是无用的。
  • 这种方法只打印输出图像的Silverlight元素。 其他元素(如WebBrowser控件的实例内容)将输出一个黑色矩形。
    复制代码
     1 public static void SaveToMediaLibrary(
    2 FrameworkElement element,
    3 string title)
    4 {
    5 try
    6 {
    7 var bmp = new WriteableBitmap(element, null);
    8
    9 var ms = new MemoryStream();
    10 bmp.SaveJpeg(
    11 ms,
    12 (int)element.ActualWidth,
    13 (int)element.ActualHeight,
    14 0,
    15 100);
    16 ms.Seek(0, SeekOrigin.Begin);
    17
    18 var lib = new MediaLibrary();
    19 var filePath = string.Format(title + ".jpg");
    20 lib.SavePicture(filePath, ms);
    21
    22 MessageBox.Show(
    23 "Saved in your media library!",
    24 "Done",
    25 MessageBoxButton.OK);
    26 }
    27 catch
    28 {
    29 MessageBox.Show(
    30 "There was an error. Please disconnect your phone from the computer before saving.",
    31 "Cannot save",
    32 MessageBoxButton.OK);
    33 }
    34 }
    复制代码
    • 这种方法可节省任何FrameworkElement的。 通常,我用它来保存一整页,但你可以通过任何其他元素。

    • 第7行,我们创建了一个新的WriteableBitmap的。 这个优秀班能渲染成位图的可视化树。 请注意,甚至更多的功能,你可以使用的的伟大WriteableBitmapEx类库 (这是开源)。

    • 第9至16行,我们到一个MemoryStream保存的WriteableBitmap的。 默认支持的唯一格式为JPEG,但它是可以转换到其他格式与ImageTools库 (开源)。

    • 18日至20行保存的Windows Phone设备的媒体库中的图片。

    使用图像

    来撷取影像,只需启动手机上的图片库。 图像将保存的图片。 从这里,你可以分享图像(例如,通过电子邮件),或使用Zune软件与PC同步。

    保存到其他平台

    这当然是可以保存到其他平台比媒体库。 例如,您可以发送图像到Web服务,或储存设备上的独立存储。 要做到这一点,而不是使用一个MemoryStream,你可以使用任何其他流(如Web请求流或文件流)和保存,而不是。

    希望此代码对您有所帮助!

    快乐编码,

    洛朗



     
posted @   寒月萧风  阅读(136)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示