4

应用程序使用由背景颜色、线性渐变和两个径向渐变组成的背景(看起来比听起来更好:)。由于此背景用于所有页面,我想定义一次,而不是在所有页面上重新使用它。

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

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

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

是否有任何“优雅”的方法来解决这个问题,或者 UserControl 是要走的路?

4

1 回答 1

0

据此- 您可以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;
于 2013-11-12T16:07:45.853 回答