通过组合其他画笔(渐变等)创建画笔

时间:2013-11-12 15:26:56

标签: xaml windows-phone-8 staticresource imagebrush

应用程序使用的背景由背景颜色,线性渐变和两个径向渐变组成(看起来更好听起来:)。由于此背景用于所有页面,我希望将其定义一次,然后在所有页面上重复使用。

我的第一个解决方案是创建一个UserControl并在其上应用颜色和渐变。然后我可以在所有页面上使用此控件作为背景。

这很好但我不知道是否有更优雅的解决方案。是否有可能将多个画笔组合成一个?然后,我可以直接将Apple“MyCombinedBrush”直接发送到页面,而不是使用额外的UserControl。

我发现可以创建图像并使用它来创建ImageBrush的信息。不幸的是,我发现的所有内容都仅限于WPF,并且无法在Windows Phone上运行。

有没有“优雅”的方法来解决这个问题,还是UserControl要走的路?

1 个答案:

答案 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;