<Window x:Class="WpfAnimationTest.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF Animation Testing" Height="600" Width="800" WindowStartupLocation="CenterScreen"> <Canvas x:Name="Root" Background="Black"> </Canvas> </Window>你会看到,除了将背景变为黑色,我们改变了默认的grid为canvas,并且设置了窗体大小和标题。改变的也不多。不像大多说WPF/XAML项目,这里我们画的大部分用代码实现。
public MainWindow() { InitializeComponent(); Rectangle myRect = new Rectangle { Width = 300, Height = 100, Stroke = Brushes.White, StrokeThickness = 1 }; Root.Children.Add(myRect); Canvas.SetLeft(myRect, 100); Canvas.SetTop(myRect, 100); }当你按下F5,你应该能看到黑色背景上白色矩形,距离每个角都是100像素,大小300像素*100像素。需要Canvas SetLeft和SetTop调用,是因为微软决定允许绘制闭环形状的任何人来决定形状绘制的位置时没有用处的。
public MainWindow() { InitializeComponent(); Rectangle myRect = new Rectangle { Width = 300, Height = 100, Stroke = Brushes.White, StrokeThickness = 1, Fill=Brushes.Red }; Root.Children.Add(myRect); Canvas.SetLeft(myRect, 100); Canvas.SetTop(myRect, 100); }你也可以设置矩形全局的实心填充颜色。然而,实心颜色有点无趣。我们将修改成更加有趣的东西。
namespace WpfAnimationTest { public class BarDescriptor { public int RectangleX { get; set; } public int RectangleY { get; set; } public int RectangleWidth { get; set; } public int RectangleHeight { get; set; } public int AnimationTimeInSeconds { get; set; } // 0.0 to 1.0 public float BarBaseRedLevel { get; set; } public float BarBaseGreenLevel { get; set; } public float BarBaseBlueLevel { get; set; } public float GradientStartX { get; set; } public float GradientStartY { get; set; } public float GradientEndX { get; set; } public float GradientEndY { get; set; } } }确保按照你的需要修改了命名空间。
using System; using System.Linq; using System.Text.RegularExpressions; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace WpfAnimationTest { public partial class MainWindow { private Rectangle _testRect; public MainWindow() { InitializeComponent(); Loaded += MainWindowLoaded; } private void MainWindowLoaded(object sender, RoutedEventArgs e) { BarDescriptor barOne = new BarDescriptor { RectangleX = 100, RectangleY = 100, RectangleWidth = 200, RectangleHeight = 200, AnimationTimeInSeconds = 0, BarBaseRedLevel = 0, BarBaseGreenLevel = 0, BarBaseBlueLevel = 0, GradientStartX = 0, GradientStartY = 0, GradientEndX = 0, GradientEndY = 0 }; CreateRectangleAnimatedRectangle(barOne); } private void CreateRectangleAnimatedRectangle(BarDescriptor inputParameters) { _testRect = new Rectangle { Width = inputParameters.RectangleWidth, Height = inputParameters.RectangleHeight, Stroke = Brushes.White, StrokeThickness = 1, }; Root.Children.Add(_testRect); Canvas.SetLeft(_testRect, inputParameters.RectangleX); Canvas.SetTop(_testRect, inputParameters.RectangleY); } } }再一次,确保输入正确的命名空间。正如之前的例子,运行时你应该又看到白色矩形,但是现在你也应该能够轻松添加新矩形,通过创建新的“BarDescriptor”对象,并设置相应参数。
BarDescriptor barOne = new BarDescriptor { RectangleX = 0, RectangleY = 0, RectangleWidth = 800, RectangleHeight = 600, AnimationTimeInSeconds = 0, BarBaseRedLevel = 0, BarBaseGreenLevel = 0, BarBaseBlueLevel = 0, GradientStartX = 0, GradientStartY = 0, GradientEndX = 0, GradientEndY = 0 };这样会创建和主窗口同样大小的矩形。
原文地址:http://blog.csdn.net/crazygolf/article/details/41310829