Metro风格应用程序中的简单径向渐变背景

时间:2012-04-28 08:57:44

标签: c# xaml directx windows-runtime winrt-xaml

在XAML / C#Metro风格应用程序中绘制径向渐变背景(也能改变它的颜色)的简单方法是什么? 是否使用DirectX?我尝试查看一些针对Windows 8 Consumer Preview的SharpDX示例,但未能编译它们。在Windows 8上没有找到在C#中使用DX的任何其他示例。 有什么想法吗?

3 个答案:

答案 0 :(得分:2)

RadialGradientBrush尚未添加到XAML堆栈中。您可以使用WriteableBitmapEx自己将渐变绘制到WriteableBitmap,然后使用Image或ImageBrush来显示它 - 尽管如果您有许多元素需要使用不同形状的渐变,这可能会非常慢。

您可以使用在Photoshop或Paint.NET中创建的常规图像。

使用DirectX可能过于复杂而且不是必需的,但您可以将DirectX与XAML混合使用。如果你真的想去那里 - 你可能需要使用SurfaceImageSource。有关MSDN here的基本介绍或查看SharpDX示例here。您可能还想使用Direct2D渲染到该表面,因此您需要混合使用相当多的技术。

答案 1 :(得分:2)

我使用SharpDx来克服这个障碍并创建一个RadialGradient填充背景

http://advertboy.wordpress.com/2012/05/20/radial-gradients-mini-path-geometry-sprites-infinite-scrolling-inertial-canvas/

答案 2 :(得分:-8)

径向渐变画笔已经存在了很长一段时间 - 我认为我第一次使用它是在2008年。无论如何,xaml中的标记非常简单:

<Rectangle Width="200" Height="100">
      <Rectangle.Fill>
        <RadialGradientBrush 
          GradientOrigin="0.5,0.5" 
          Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
          <RadialGradientBrush.GradientStops>
            <GradientStop Color="Yellow" Offset="0" />
            <GradientStop Color="Red" Offset="0.25" />
            <GradientStop Color="Blue" Offset="0.75" />
            <GradientStop Color="LimeGreen" Offset="1" />
          </RadialGradientBrush.GradientStops>
        </RadialGradientBrush>
      </Rectangle.Fill>
    </Rectangle>

此处详细信息:http://msdn.microsoft.com/en-us/library/ms752281(v=vs.100).aspx