2013-11-12 2 views
3

приложение использует фон, который состоит из цвета фона, градиента линии и двух радиальных градиентов (выглядит лучше, чем кажется). Поскольку этот фон используется на всех страницах, я хотел бы определить его один раз и повторно использовать его на всех страницах.Создайте кисть, объединив другие кисти (градиенты и т. Д.).

Моим первым решением было создать UserControl и применить к нему цвет и градиент. Затем я могу использовать этот элемент управления на всех страницах в качестве фона.

Это прекрасно работает, но мне интересно, есть ли более элегантное решение. Можно ли объединить несколько кистей в один? Тогда я мог бы просто Apple «MyCombinedBrush» перейти на страницу напрямую, а не использовать дополнительный UserControl.

Я нашел информацию о том, что можно создать изображение и использовать его для создания ImageBrush. К сожалению, все, что я нашел, ограничено WPF и не работает на Windows Phone.

Есть ли какой-нибудь «изящный» способ решить эту проблему или это UserControl?

ответ

0

Согласно this - вы можете использовать ImageBrush на WP. (Хотя я не пробовал)

<TextBlock FontFamily="Verdana" FontSize="72"> 
    <TextBlock.Foreground> 
    <ImageBrush ImageSource="forest.jpg"/> 
    </TextBlock.Foreground> 
</TextBlock> 


EDIT:

Вот одно решение, я разработал - она ​​имеет некоторые недостатки, но работает достаточно хорошо, и позволяет играть очень хорошо многие кисти:

Canvas canvasToBeBrush = new Canvas(); 
canvasToBeBrush.Width = 300; 
canvasToBeBrush.Height = 300; 
Rectangle firstBrush = new Rectangle(); 
firstBrush.Width = 200; 
firstBrush.Height = 200; 
firstBrush.Fill = new RadialGradientBrush(Colors.Blue, Colors.Brown); 
Rectangle secondBrush = new Rectangle(); 
secondBrush.Width = 200; 
secondBrush.Height = 200; 
secondBrush.Opacity = 0.5; 
secondBrush.Fill = new SolidColorBrush(Colors.Orange); 
canvasToBeBrush.Children.Add(firstBrush); 
canvasToBeBrush.Children.Add(secondBrush); 
WriteableBitmap bitmapToBrush = new WriteableBitmap(canvasToBeBrush, null); 
ImageBrush myBrush = new ImageBrush(); 
myBrush.ImageSource = bitmapToBrush; 
LayoutRoot.Background = myBrush; 
+0

Попадая в изображения в ImageBrush не проблема. Но это не вопрос. Мой фон рисуется с использованием нескольких Brusches (SolidBrush + Gradients). Как создать комбинированную кисть? Я нашел информацию о том, что это будет возможно, вычерчивая желаемый шаблон для изображения и используя его как вход для ImageBrush. Я не знаю, как это сделать на WP. Если есть какие-либо другие решения, которые не используют ImageBrush, это тоже было бы неплохо. –

+0

Я добавил одно решение (все еще использую ImageBrush), но отлично работает. – Romasz

 Смежные вопросы

  • Нет связанных вопросов^_^