直接上代码:
var tileControl1 = new FlipCycleTileSmallControl(""); tileControl1.Measure(new Size(159, 159)); tileControl1.Arrange(new Rect(0d, 0d, 159, 159)); var writeableBitmap1 = new System.Windows.Media.Imaging.WriteableBitmap(tileControl1, null); i1.Source = writeableBitmap1; var tileControl2 = new FlipCycleTileMediumControl(""); tileControl2.Measure(new Size(336, 336)); tileControl2.Arrange(new Rect(0d, 0d, 336, 336)); var writeableBitmap2 = new System.Windows.Media.Imaging.WriteableBitmap(tileControl2, null); i2.Source = writeableBitmap2; var tileControl3 = new FlipCycleTileMediumControl(""); tileControl3.Measure(new Size(691, 336)); tileControl3.Arrange(new Rect(0d, 0d, 691, 336)); var writeableBitmap3 = new System.Windows.Media.Imaging.WriteableBitmap(tileControl3, null); i3.Source = writeableBitmap3;
FlipCycleTileSmallControl,FlipCycleTileMediumControl,FlipCycleTileMediumControl是三个用户控件
我的目的是创建三个用户控件,然后通过WriteableBitmap截图,将截图保存为jpg文件,
可是保存的jpg文件只有第一个控件式正常的,其他两个都是黑色背景,而且布局散乱,
于是我用image控件显示出来了,奇怪的是,显示出来的图片,除第一个外,后两个也是布局散乱,黑色背景,
何故????
发现你在stackoverflow, MSDN都提了这个问题
图片是如何保存的?
@dudu:
果然是大侠,这都被你发现了,图片用WriteableBitmapEx类库保存的:
using (var isolatedStorageFile = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication()) { using (var stream = isolatedStorageFile.CreateFile("/Shared/ShellContent/" + cityCode + "_FlipCycleTileSmall.jpg")) { writeableBitmap.SaveJpeg(stream, ShellTileUtility._flipCycleTileSmallWidth, ShellTileUtility._flipCycleTileSmallWidth, 0, 100); } }
现在已经找到问题所在了:
var tileControl2 = new FlipCycleTileMediumControl("");
tileControl2.UpdateLayout();// todo:加这一句代码就好了,
多谢大侠,
@dudu:
有时间再看看这个问题吧,:)
http://q.cnblogs.com/q/54330/