我想动态生成磁贴背景图片,于是建立了一个用户控件,然后:
var tileControl = new TileUserControl(.......);
tileControl.Measure(new Size(173, 173));
tileControl.Arrange(new Rect(0d, 0d, 173, 173));
var writeableBitmap = new System.Windows.Media.Imaging.WriteableBitmap(tileControl, null);
用以上代码生成writeableBitmap ,再保存writeableBitmap ,最后设置磁贴背景,
可是保存出来的图像总是黑色的背景,而且里面的布局都乱套了,
经过多次调试发现,以上代码在异步代码中就会出现“乱套”,如果我在界面上放一个按钮,点击按钮调用以上代码,生成的writeableBitmap 就是对的,不知何故?
异步回调中,我使用的是Deployment.Current.Dispatcher.BeginInvoke(。。。。)调用以上的代码,
很简单嘛:
var tileControl = new TileUserControl(.......); tileControl.UpdateLayout();// 加这一行 tileControl.Measure(new Size(173, 173)); tileControl.Arrange(new Rect(0d, 0d, 173, 173)); var writeableBitmap = new System.Windows.Media.Imaging.WriteableBitmap(tileControl, null);