本小节将介绍如何将页面元素保存为图片,在前一小节中,我们加入了名称为gridMsg的Grid Control,现在我们将使用RenderTargetBitmap把gridMsg这个页面元素保存为一张图片。在将gridMsg保存为图片时,会将gridMsg的子元素包括Border和TextBlock一并存储为图片的一部分。学习完本节内容,您能够通过RenderTargetBitmap将任何的页面元素存储成图片。

  • 定义Button1(btnSendMail)的单击事件
  • 在单击事件方法中,将gridMsg及其子元素存储成图片

打开Card程序, 在MainPage.xaml中,定位到btnSendMail控件,新添加单击事件SendMail_Click,修改后代码如下:

<Button x:Name="btnSendMail" Content="Send to Friend" Grid.Row="1" Margin="4" Click="SendMail_Click"/>

然后,用鼠标在SendMail_Click中任何位置单击, 在键盘上按下F12键,进入Code Behind代码。

在MainPage.xaml.cs文件中,使用关键字async将SendMail_Click方法修改为异步方法。

private async void SendMail_Click(object sender, RoutedEventArgs e)
{
}

在页面顶部,添加命名空间引用:

using Windows.Graphics.Imaging;
using Windows.Storage;

返回SendMail_Click方法中,实现程序逻辑如下:

private async void SendMail_Click(object sender, RoutedEventArgs e)
{
RenderTargetBitmap renderTrgBitmap = new RenderTargetBitmap();
await renderTrgBitmap.RenderAsync(gridMsg); var pixelBuffer = await renderTrgBitmap.GetPixelsAsync();
var file = await KnownFolders.PicturesLibrary.CreateFileAsync("Wishes.jpg", CreationCollisionOption.ReplaceExisting); using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Straight,
(uint)renderTrgBitmap.PixelWidth,
(uint)renderTrgBitmap.PixelHeight,
96d, 96d,
pixelBuffer.ToArray()); await encoder.FlushAsync();
}
}

在以上代码中,首先使用RenderTargetBitmap(在Windows.UI.Xaml.Media.Imaging中)将gridMsgGrid Control转化为内存对象,然后使用BitmapEncoder(在Windows.Graphics.Imaging中)将内存对象写入到Picture Library中Wishes.jpg文件中。

修改Capabilities声明

在Solution Explorer中, 双击打开Package.appxmanifest文件。单击Capabilities选项卡,在Capabilities列表中,勾选Picture Library

运行程序,单击Send to Friend, 然后切换到Pictures文件夹,查看生成的Wishes.jpg。

M3: 将页面元素制作为图片的更多相关文章

  1. 使用 jQuery 操作页面元素的方法,实现浏览大图片的效果,在页面上插入一幅小图片,当鼠标悬停到小图片上时,在小图片的右侧出现与之相对应的大图片

    查看本章节 查看作业目录 需求说明: 使用 jQuery 操作页面元素的方法,实现浏览大图片的效果,在页面上插入一幅小图片,当鼠标悬停到小图片上时,在小图片的右侧出现与之相对应的大图片 实现思路: 在 ...

  2. 47.前端css学习、登陆页面的制作

    CSS: 有了CSS,html中大部分表现样式的标签就可以不用了 html只负责文档的结构和内容,表现形式完全交给CSS,html文档变得更加简洁 CSS的引入方式: 内联式引入:直接赋予标签styl ...

  3. 网页特效:用CSS3制作3D图片立方体旋转特效

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. 使用 SVG 动画实现弹性的页面元素效果

    Codrops 分享了一些给SVG元素加上弹性动画的灵感.实现的思路是把一个SVG元素整合成一个组件,然后从一个路径弹性动画到另一个.这种效果可以应用到像菜单,按钮或其它元素,使得交互更有趣,看起更原 ...

  5. 使用chrome查看页面元素的css样式

    使用chrome查看页面元素的css样式 我们在写页面的时候,可能总是不知道怎么回事,就发现某个元素出现了问题,但是不知道为什么会这样,这时候,就需要使用强大的chrome了!!! 举例说明: 1. ...

  6. html页面元素加载顺序

    一般来说,添加背景图片有三种办法: 直接写在标签的style里面,如: <div style="background-image:url('images/Css.JPG')" ...

  7. 制作3D图片立方体旋转特效

    <!DOCTYPE html><html><head><meta charset="utf-8" /><title>CS ...

  8. java selenium webdriver实战 页面元素定位

    自动化测试实施过程中,测试程序中常用的页面操作有三个步骤 1.定位网页上的页面元素,并存储到一个变量中 2.对变量中存储的页面元素进行操作,单击,下拉或者输入文字等 3.设定页面元素的操作值,比如,选 ...

  9. Net处理html页面元素工具类(HtmlAgilityPack.dll)的使用

    现在,在不少应用场合中都希望做到数据抓取,特别是基于网页部分的抓取.其实网页抓取的过程实际上是通过编程的方法,去抓取不同网站网页后,再进行 分析筛选的过程.比如,有的比较购物网站,会同时去抓取不同购物 ...

随机推荐

  1. [poj3017] Cut the Sequence (DP + 单调队列优化 + 平衡树优化)

    DP + 单调队列优化 + 平衡树 好题 Description Given an integer sequence { an } of length N, you are to cut the se ...

  2. 又见JavaWeb的中文乱码

    简单翻了一下记录,我已经写了至少4篇关于编码和乱码的博客了,每次都觉得自己懂了. 实际上,这次的遭遇证明了"真懂"是一种很难达到的境界,吾辈仍需努力! 一.背景是这样子的: .一个 ...

  3. IIS 7中 ISAPI 错误解决

    在本地IIS种发布了一个测试网站,浏览的时候提示 404 错误,无法显示页面,具体错误如下: 解决办法如下: 选择IIS根目录,在右边的功能视图中选择 “ISAPI 和 CGI限制”,双击打开, 把相 ...

  4. 《BI项目笔记》基于雪花模型的维度设计

    GBGradeCode 外键关系: 1 烟叶等级 T_GBGradeCode.I_DistinctionID=T_Distinction.I_DistinctionID 烟叶等级分为:上等烟.中等烟. ...

  5. 《BI项目笔记》历年理化指标分析Cube的建立

    该系统属于数据仓库系统,与传统的管理信息系统有本质差别,是“面向主题”设计的.“面向主题”的方式,既有利于数据组织和利用,又有利于用户的理解和使用. 分析主题主要维度:烟叶级别.烟叶级别按等级信息.烟 ...

  6. Java开发高薪之路__大纲篇

    本人小白,现对java开发做出以下总结,内容将从初级开始,逐步完善与摸索. 基础篇 网页篇 Android篇 高级建设篇 数据篇 系统篇

  7. RMAN的实战篇--备份脚本

    案列一. 目标: 1.每天夜间1 点执行:2.数据库全备,同时备份控制文件及归档日志文件,备份文件保存至: /backup\目录下,并在完成归档日志文件备份后,自动删除已备份的归档日志:3.备份保留7 ...

  8. location.hash的摘抄

    location.hash详解 去年9月,twitter改版. 一个显著变化,就是URL加入了"#!"符号.比如,改版前的用户主页网址为 http://twitter.com/us ...

  9. java程序

    package Dome3; import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import jav ...

  10. C++ const、volatile、mutable的用法 (转)

      const.volatile.mutable的用法 鸣谢作者: http://blog.csdn.net/wuliming_sc/article/details/3717017 const修饰普通 ...