как создать плитку wp7 с прозрачным png в качестве фона и динамических данных поверх этого - PullRequest
1 голос
/ 12 января 2012

Как создать плитку wp7 с png в качестве фона? То, что у меня есть, это 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 Ответ

1 голос
/ 12 января 2012

Возможно, вы не сохраняете изображение в формате PNG. В своем коде вы пропустили часть сохранения, но если вы используете метод SaveJPEG, вы, очевидно, не получите прозрачность.

Рассмотрите возможность использования метода SavePNG из библиотеки WriteableBitmapEx и посмотрите, работает ли он лучше.

Или вы можете установить фон следующим образом:

backgroundBrush = (Brush)Application.Current.Resources["PhoneAccentBrush"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...