http://msdn.microsoft.com/zh-cn/library/windows/apps/bg182878.aspx#five

将 XAML 树呈现为位图:

适用于 Windows 8.1 的 Windows 运行时为 Windows.UI.Xaml.Media.Imaging 命名空间添加了一种新类型:RenderTargetBitmap

此类型提供了两个关键方法:

  • RenderTargetBitmap.RenderAsync,用于提取 XAML 可视化树 并为其创建位图表示。

    注意  此操作采用异步方式,将给定的 XAML 元素树呈现为位图。 此方法与屏幕刷新不同步,不能保证精确的帧计时,因此该位图可能在假定捕获时刻前后的一瞬间进行呈现。

  • RenderTargetBitmap.GetPixelsAsync,用于以特定格式返回像素的字节数组。

下例显示如何呈现 XAML 元素树。

var renderTargetBitmap = new RenderTargetBitmap();
await renderTargetBitmap.RenderAsync(myElementTree); myImage.Source = renderTargetBitmap;

RenderTargetBitmap 继承自 ImageSource,因此可以直接将其设置为 Image 对象的源,而无需调用 GetPixelsAsync 以获取及显示位图数据。

下例显示如何将呈现的位图写入文件。

            var bitmap = new RenderTargetBitmap();
await bitmap.RenderAsync(this.C1);
IBuffer buffer = await bitmap.GetPixelsAsync();
var pixelStream = buffer.AsStream(); FileSavePicker savePicker = new FileSavePicker();
savePicker.SuggestedStartLocation = PickerLocationId.Desktop;
savePicker.FileTypeChoices.Add("Bitmap", new List<string>() { ".png" });
savePicker.SuggestedFileName = "New Bitmap"; StorageFile savedItem = await savePicker.PickSaveFileAsync(); Guid encoderId = BitmapEncoder.PngEncoderId;
IRandomAccessStream fileStream = await savedItem.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(encoderId, fileStream);
byte[] pixels = new byte[pixelStream.Length];
pixelStream.Read(pixels, , pixels.Length); //pixal format shouldconvert to rgba8
for (int i = ; i < pixels.Length; i += )
{
byte temp = pixels[i];
pixels[i] = pixels[i + ];
pixels[i + ] = temp;
} encoder.SetPixelData(
BitmapPixelFormat.Rgba8,
BitmapAlphaMode.Straight,
(uint)bitmap.PixelWidth,
(uint)bitmap.PixelHeight,
, // Horizontal DPI
, // Vertical DPI
pixels); await encoder.FlushAsync();

MetroApp保存UIEment为图片 http://www.cnblogs.com/manupstairs/p/3556642.html 的代码 也差不多。其//pixal format shouldconvert to rgba8 下面的一段交换代码不用会变色。

A new control for XAML that lets you easily create the hub design pattern that reflects the proper design guidelines and behaviors: the Hub control.

Hub pages are the user's entry point to your app.

(Hub页是用户进入应用的入口点。)

Hub可以分区显示,通过将不同的内容放入不同的HubSection来实现。HubSection也可以设置标题,做法与Hub一致。如果HubSection的IsHeaderInteractive属性为true,那么标题默认包含 '>' 字型,以及悬停和按下状态。

 void Hub_SectionHeaderClick(object sender, HubSectionHeaderClickEventArgs e)
{
HubSection section = e.Section;
var group = section.DataContext;
this.Frame.Navigate(typeof(SectionPage), ((SampleDataGroup)group).UniqueId);
}

临时显示与用户当前操作相关的 UI:Flyout 控件。

临时显示与用户当前操作相关的命令或选项列表:MenuFlyout 控件。

轻松地创建应用设置浮出控件,恰如其分地反映设计思想和行为:SettingsFlyout 控件。

Windows 8.1 将 PlaceholderText 属性添加到多个包含文本的控件中。某些控件(如 ComboBoxPasswordBox)可能需要用户输入。如果不想使用默认值或显示空控件,你可以添加占位符文本以便为用户提供上下文。

XAML 数据绑定改进:

Windows 8.1 中添加了以下 API 元素:

Windows 8.1 新控件和功能:的更多相关文章

  1. Windows高DPI系列控件(二) - 柱状图

    目录 一.QCP 二.效果展示 三.高DPI适配 1.自定义柱状图 2.新的柱状图 3.测试代码 四.相关文章 原文链接:Windows高DPI系列控件(二) - 柱状图 一.QCP QCP全称QCu ...

  2. 【Android】Anroid5.0+新控件---酷炫标题栏的简单学习

    Android5.0+推出的新控件感觉特别酷,最近想模仿大神做个看图App出来,所以先把这些新控件用熟悉了. 新控件的介绍.使用等等网上相应的文章已经特别多了,题主也没那能力去写篇详解出来,本篇随笔记 ...

  3. Android其它新控件 (转)

    原文出处:http://blog.csdn.net/lavor_zl/article/details/51312715 Android其它新控件是指非Android大版本更新时提出的新控件,也非谷歌I ...

  4. Delphi XE2 新控件 布局Panel TGridPanel TFlowPanel

    Delphi XE2 新控件 Firemonkey 布局Panel Windows平台VCl TGridPanel TFlowPanel FMX 跨平台 TLayout TGridLayout TFl ...

  5. Windows Phone 8.1 控件

    如果你已经开始了 Windows Phone 8.1 的学习,就会发现许多在 8.0 下的控件在 8.1 中都发生了变化,以下就谈谈几个 8.1 下的新控件以及与 8.0 控件的改变. 1. Text ...

  6. 一个Activity掌握Design新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51295364 谷歌在推出Android5.0的同时推出了全新的设计Material Desig ...

  7. 一个Activity掌握Android5.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51279386 谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常 ...

  8. 一个Activity掌握Android4.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51261380 谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常 ...

  9. [深入浅出Windows 10]分屏控件(SplitView)

    4.18 分屏控件(SplitView) 分屏控件(SplitView)是Windows 10新增的控件类型,也是Windows 10通用应用程序主推的交互控件,通常和一个汉堡按钮搭配作为一种抽屉式菜 ...

随机推荐

  1. python3 文件读写,编码错误UnicodeDecodeError

    问题:python3 with open文件进行读写,报编码错误 /usr/local/Cellar/python3/3.5.2/Frameworks/Python.framework/Version ...

  2. vue-webpack项目本地开发环境设置代理解决跨域问题

    前言: 一般跨域问题只要后端配置好的话,是不需要前端做处理的,但也不能保证你遇到的所有后端都能很好的处理这个问题,这个时候可能就需要前端设置代理解决这个问题了. 配置方法: 1. config/ind ...

  3. 【git】gitignore

    gitignore git专门有个文件用来管理那些不被纳入版本库的文件,这个文件是 [.gitignore],所有不被包含的都能放进去,但这个是有前提的. 前提 前提是文件如果没被git客户端trac ...

  4. f5创建monitor

  5. Python: 浅淡Python中的属性(property)

    起源:项目过程中需要研究youtube_dl这个开源组件,翻阅其中对类的使用,对比c#及Delphi中实现,感觉Python属性机制挺有意思.区别与高级编程语言之单一入口,在类之属性这一方面,它随意的 ...

  6. redis集群 与spring-data-redis 集成

    所遇到的坑:必须使用如下的jedis 版本与spring-data-redis 版本,才能够达到集群效果 .1.7版本以前是不支持集群的 <dependency> <groupId& ...

  7. linux操作Mysql数据库基本命令

    1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 S ...

  8. [z]规则引擎

    https://www.ibm.com/developerworks/cn/java/j-drools/ 使用声明性编程方法编写程序的业务逻辑 使用规则引擎可以通过降低实现复杂业务逻辑的组件的复杂性, ...

  9. js原生语法实现表格操作

    HTML页面: <!doctype html> <html lang="en"> <head> <meta charset="U ...

  10. Jmeter常用脚本开发之Java请求

    Java请求:就是用来对java项目的类进行压测 例子:将输入的两个参数通过IO存入文件 1.创建Java工程,工程目录如下 2.将Jmeter-lib下面的所有jar包导入java工程, 3.创建一 ...