应用程序使用的背景由背景颜色,线性渐变和两个径向渐变组成(看起来更好听起来:)。由于此背景用于所有页面,我希望将其定义一次,然后在所有页面上重复使用。
我的第一个解决方案是创建一个UserControl并在其上应用颜色和渐变。然后我可以在所有页面上使用此控件作为背景。
这很好但我不知道是否有更优雅的解决方案。是否有可能将多个画笔组合成一个?然后,我可以直接将Apple“MyCombinedBrush”直接发送到页面,而不是使用额外的UserControl。
我发现可以创建图像并使用它来创建ImageBrush的信息。不幸的是,我发现的所有内容都仅限于WPF,并且无法在Windows Phone上运行。
有没有“优雅”的方法来解决这个问题,还是UserControl要走的路?
答案 0 :(得分:0)
根据this - 您可以在WP上使用ImageBrush。 (虽然我没试过这个)
<TextBlock FontFamily="Verdana" FontSize="72">
<TextBlock.Foreground>
<ImageBrush ImageSource="forest.jpg"/>
</TextBlock.Foreground>
</TextBlock>
修改强>
这是我制定的一个解决方案 - 它有一些缺点,但效果很好,可以让你在很多画笔上玩得很好:
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;