如何创建一个透明的png作为背景和动态数据的wp7磁贴

时间:2012-01-12 00:21:37

标签: windows-phone-7

如何使用png作为背景创建wp7磁贴?我所拥有的是一个白色透明的png。我希望白色显示在瓷砖上,但我还想在透明部分上写一些动态数据,你是怎么做到的?

我尝试了几种不同的方法,例如为不同的元素设置不透明度蒙版,并将其写入可写的位图,但我无法使其正常工作。

下面的牛仔代码就是我现在所拥有的:

var backgroundUri = new Uri("Graphics/Icon_173.png", UriKind.Relative);
var imageStream = App.GetResourceStream(backgroundUri).Stream;
var bitmapImage = new BitmapImage();
bitmapImage.SetSource(imageStream);
ImageBrush backgroundBrush = new ImageBrush();
backgroundBrush.ImageSource = bitmapImage;
backgroundBrush.Opacity = 100;            

var backgroundRectangle = new Rectangle();
backgroundRectangle.Height = 173;
backgroundRectangle.Width = 173;
backgroundRectangle.Fill = Resources.Brushes.PhoneAccentBrush;
backgroundRectangle.OpacityMask = backgroundBrush;

WriteableBitmap writeableBitmap = new WriteableBitmap(173, 173);
writeableBitmap.Render(backgroundRectangle, new TranslateTransform());

这几乎可以满足我的需求,我从背景矩形中得到正确的背景但是面具是黑色而不是白色。

1 个答案:

答案 0 :(得分:1)

您可能没有将图像保存为PNG。在您的代码中,您省略了保存部分,但如果您使用SaveJPEG方法,则显然不会获得透明度。

考虑使用WriteableBitmapEx库中的SavePNG方法,看看它是否更有效。

或者您可以像这样设置背景:

backgroundBrush = (Brush)Application.Current.Resources["PhoneAccentBrush"];