这几天项目是遇到一个需求,需要后台把几个元素生成到一张图片上,并保存到文件中

 private void cutscreen_Click(object sender, EventArgs e)
{
Grid contentGrid = new Grid()
{
Width = ,
Background = new SolidColorBrush(Colors.White)
};
RowDefinition row1 = new RowDefinition();
RowDefinition row2 = new RowDefinition(); contentGrid.RowDefinitions.Add(row1);
contentGrid.RowDefinitions.Add(row2); Image ShowImg = new Image()
{
Source = new BitmapImage(new Uri("/Assets/Kelly-Clarkson.jpg", UriKind.Relative))
}; Grid.SetRow(ShowImg, );
contentGrid.Children.Add(ShowImg); TextBlock ShowIntrotbk = new TextBlock()
{
Text = "我要把你和图片连接在一起",
FontSize = ,
TextWrapping = TextWrapping.Wrap
}; Grid.SetRow(ShowIntrotbk, );
contentGrid.Children.Add(ShowIntrotbk); SaveImage(contentGrid);
} private void SaveImage(UIElement _cutimgPanel)
{
WriteableBitmap wrbitmap = new WriteableBitmap(_cutimgPanel, null); using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream fileStream = storage.CreateFile("CutPanel.jpg"))
{
wrbitmap.SaveJpeg(fileStream, (int)_cutimgPanel.DesiredSize.Width, (int)_cutimgPanel.DesiredSize.Height, , );
MessageBox.Show("生成成功!");
}
}
}

这样居然有异常了

原来 获得的 Width和Height都是0,上面已经指定了宽度,但是依然没有获得

这时把生成的Grid添加的页面上,居然正常显示了(为了和下一张区分,我加了一个TextBox)

这就说明生成成功能,可为什么会报错呢?

原来,windows phone如果控件不在界面上显示时,是不会计算其布局大小的,所以没有宽度和高度的,那我们就手动计算一下呗,在后面添加完以下代码

contentGrid.Measure(new Size(, ));//这时重新计算一下,这个高度是没有效果的最好超过你所有控件的加起来的高度
contentGrid.Arrange(new Rect(, , (int)contentGrid.DesiredSize.Width, (int)contentGrid.DesiredSize.Height));

完工了,这样我们就可以在后台拼接任意图片了

Windows Phone 使用 WriteableBitmap后台生成图片的更多相关文章

  1. highcharts 结合phantomjs纯后台生成图片系列二之php2

    上篇文章中介绍了phantomjs的使用场景,方法. 本篇文章详细介绍使用php,highcharts 结合phantomjs纯后台生成图片.包含一步步详细的php代码 一.highcharts 结合 ...

  2. highcharts 结合phantomjs纯后台生成图片系列二之php

    上篇文章中介绍了phantomjs的使用场景,方法.本篇文章详细介绍使用php,highcharts 结合phantomjs纯后台生成图片. 一.准备: 下载phantomjs解析插件,从 highc ...

  3. highcharts 结合phantomjs纯后台生成图片

    highcharts 结合phantomjs纯后台生成图片 highcharts 这个图表展示插件我想大家应该都知道,纯javascript编写,相比那些flash图表插件有很大的优势,至少浏览器不用 ...

  4. 背水一战 Windows 10 (120) - 后台任务: 后台上传任务

    [源码下载] 背水一战 Windows 10 (120) - 后台任务: 后台上传任务 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 后台上传任务 示例演示 uwp 的后台上 ...

  5. 背水一战 Windows 10 (119) - 后台任务: 后台下载任务(任务分组,组完成后触发后台任务)

    [源码下载] 背水一战 Windows 10 (119) - 后台任务: 后台下载任务(任务分组,组完成后触发后台任务) 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 后台下 ...

  6. 背水一战 Windows 10 (118) - 后台任务: 后台下载任务(任务分组,并行或串行执行,组完成后通知)

    [源码下载] 背水一战 Windows 10 (118) - 后台任务: 后台下载任务(任务分组,并行或串行执行,组完成后通知) 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 ...

  7. 背水一战 Windows 10 (117) - 后台任务: 后台下载任务

    [源码下载] 背水一战 Windows 10 (117) - 后台任务: 后台下载任务 作者:webabcd 介绍背水一战 Windows 10 之 后台任务 后台下载任务 示例演示 uwp 的后台下 ...

  8. Windows Phone background Audio 后台音频

    Windows Phone 后台音频的确不是什么新鲜的话题了,但发现目前在WP平台的音频播放应用多多少少会有一些瑕疵,所以在此给大家在此介绍下这个功能给有需要的朋友们. 首先介绍下我们的应用在后台播放 ...

  9. Windows Redis 开机启动后台运行

    1. 从 Redis 的安装目录进入 cmd 2. 在 cmd 中输入, 将Redis绑定为 Windows 服务, 并设置为后台启动: redis-server --service-install ...

随机推荐

  1. Qt入门(12)——Qt国际化

    应用的国际化就是使应用成为能被非本国的人使用的过程.有的情况下,国际化很简单,例如,使一个US应用可被Australian或者British用户理解,工作可能少于几个拼写修正.但是使一个US应用可以被 ...

  2. (转载)PHP 动态生成表格

    (转载)http://hi.baidu.com/shawns/item/c7d51f351c6a0482b711dba6 提要:PHP能够高效地生成HTML代码,其中,动态生成表格是实际应用中经常碰到 ...

  3. [github] 创建个人网页

    创建 github.io 的个人子域名网页,其实非常简单,只需要两步: 1)创建名为 username.github.io 的代码仓库 2)把网页代码上传到代码库中 在 username.github ...

  4. UVa1453或La4728 凸包+枚举(或旋转卡壳)

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. Xcode use Protocol buffer

    http://stackoverflow.com/questions/10277576/google-protocol-buffers-on-ios http://stackoverflow.com/ ...

  6. vs2008 多人同时开发项目时的代码注释规范格式 分类: C#小技巧 2014-04-23 14:12 297人阅读 评论(0) 收藏

    多人同时开发一个项目,区分项目的那个窗体是谁开发的,例:下面的格式 /************************************************       模块:服务器设置   ...

  7. android——api

    一.1.复用首页做法—从Intent中获取”com.example.android.apis.Path”.根据这个结合PackageManger获得的Activities来展示不同等级的List界面( ...

  8. 10款AJAX/CSS/HTML的在线表单生成器

    本文转载:http://www.oschina.net/news/24327/10-ajax-css-html-online-form-builder 在这篇文章中,我们将介绍10个超棒的在线表单生成 ...

  9. CSS 有趣的边框

    今天看到一篇文章.是利用CSS边框来做折纸效果.感觉非常有意思.于是就对CSS的border研究了一下.发现还真有一些好玩的使用方法. 1.border折纸效果 首先是HTML代码,为了简单,就一个d ...

  10. sync fsync fdatasync ---systemtap跟踪

    aa.stp: probe kernel .function ( "sys_sync" ) { printf ( "probfunc:%s fun:%s\n", ...