如何使用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());
这几乎可以满足我的需求,我从背景矩形中得到正确的背景但是面具是黑色而不是白色。
答案 0 :(得分:1)
您可能没有将图像保存为PNG。在您的代码中,您省略了保存部分,但如果您使用SaveJPEG
方法,则显然不会获得透明度。
考虑使用WriteableBitmapEx库中的SavePNG方法,看看它是否更有效。
或者您可以像这样设置背景:
backgroundBrush = (Brush)Application.Current.Resources["PhoneAccentBrush"];