需要帮助将XAML转换为C#代码?

时间:2009-11-04 04:15:10

标签: c# xaml

<!-- Base color -->
    <Ellipse Width="24" Height="24" Margin="10">
        <Ellipse.Fill>
            <RadialGradientBrush GradientOrigin=".5,.8" RadiusX="0.6">
                <GradientStop Color="#002255" Offset="1" />
                <GradientStop Color="#00eeff" Offset="0" />
            </RadialGradientBrush>
        </Ellipse.Fill>
    </Ellipse>
    <!-- Highligh color-->
    <Ellipse Width="18" Height="15" Canvas.Top="1" Canvas.Left="3" Margin="10">
        <Ellipse.Fill>
            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                <GradientStop Color="#ffffff" Offset="0" />
                <GradientStop Color="Transparent" Offset="1" />
            </LinearGradientBrush>
        </Ellipse.Fill>
    </Ellipse>

2 个答案:

答案 0 :(得分:5)

我会举个例子。

此:

<Rectangle Width="200" Height="100">
  <Rectangle.Fill>
    <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
      <GradientStop Color="Yellow" Offset="0.0" />
      <GradientStop Color="Red" Offset="0.25" />
      <GradientStop Color="Blue" Offset="0.75" />
      <GradientStop Color="LimeGreen" Offset="1.0" />
    </LinearGradientBrush>
  </Rectangle.Fill>
</Rectangle>

相当于:

Rectangle rectangle = new Rectangle();
rectangle.Width = 200;
rectangle.Height = 100;

// Create a diagonal linear gradient with four stops.   
LinearGradientBrush brush = new LinearGradientBrush();
brush.StartPoint = new Point(0,0);
brush.EndPoint = new Point(1,1);
brush.GradientStops.Add(new GradientStop(Colors.Yellow, 0.0));
brush.GradientStops.Add(new GradientStop(Colors.Red, 0.25));                
brush.GradientStops.Add(new GradientStop(Colors.Blue, 0.75));        
brush.GradientStops.Add(new GradientStop(Colors.LimeGreen, 1.0));

// Use the brush to paint the rectangle.
rectangle.Fill = brush;

http://msdn.microsoft.com/en-us/library/system.windows.media.lineargradientbrush.aspx

答案 1 :(得分:1)

以下是您的第一个Ellipse的代码:

RadialGradientBrush radialGradientBrush =
    new RadialGradientBrush
        {
            GradientOrigin = new Point(.5, .8),
            RadiusX = 0.6
        };

radialGradientBrush.GradientStops.Add(
    new GradientStop
        {
            Color = ((Color) ColorConverter.ConvertFromString("#002255")),
            Offset = 1
        });
radialGradientBrush.GradientStops.Add(
    new GradientStop
        {
            Color = ((Color) ColorConverter.ConvertFromString("#00eeff")),
            Offset = 0
        });

Ellipse firstEllipse =
    new Ellipse {Width = 24, Height = 24, Margin = new Thickness(10), Fill = radialGradientBrush};

你可以轻松地在同一行上制作第二个。

编辑:如果你是新手,第二个椭圆中的附加画布属性可能会变得棘手,所以这里是你如何设置它们:

Canvas.SetTop(secondEllipse, 1);
Canvas.SetLeft(secondEllipse, 3);