WPF游戏编程01--物体运动
2011-10-11 14:35
225 查看
<Canvas x:Name="container" Width="800" Height="600" Background="Silver" MouseMove="container_MouseMove" MouseLeftButtonDown="container_MouseLeftButtonDown"> </Canvas>
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Media.Animation; namespace WPFApplication { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DrawRectangle(); DrawCircle(); } // 绘制矩形 private void DrawRectangle() { rect = new Rectangle(); rect.Width = 50; rect.Height = 50; rect.RadiusX = 5; rect.RadiusY = 5; rect.Fill = new SolidColorBrush(Colors.Beige); Canvas.SetLeft(rect, 400); Canvas.SetTop(rect, 300); container.Children.Add(rect); } private void container_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Point point = e.GetPosition(container); Storyboard storyboard = new Storyboard(); // x DoubleAnimation doubleAnimation = new DoubleAnimation(Canvas.GetLeft(rect), point.X, new Duration(TimeSpan.FromMilliseconds(500))); Storyboard.SetTarget(doubleAnimation, rect); Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Left)")); storyboard.Children.Add(doubleAnimation); // y doubleAnimation = new DoubleAnimation(Canvas.GetTop(rect), point.Y, new Duration(TimeSpan.FromMilliseconds(500))); Storyboard.SetTarget(doubleAnimation, rect); Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Top)")); storyboard.Children.Add(doubleAnimation); if (!Resources.Contains("rectAnimation")) { Resources.Add("rectAnimation", doubleAnimation); } storyboard.Begin(); } private void DrawCircle() { circle = new Ellipse(); circle.Width = 50; circle.Height = 50; circle.Fill = new SolidColorBrush(Colors.Bisque); Canvas.SetLeft(circle,0); Canvas.SetTop(circle,0); container.Children.Add(circle); } private void container_MouseMove(object sender, MouseEventArgs e) { Point p = e.GetPosition(container); Storyboard storyboard = new Storyboard(); // x DoubleAnimation animation = new DoubleAnimation(Canvas.GetLeft(circle), p.X, new Duration(TimeSpan.FromMilliseconds(500))); Storyboard.SetTarget(animation, circle); Storyboard.SetTargetProperty(animation,new PropertyPath("(Canvas.Left)")); storyboard.Children.Add(animation); // y animation = new DoubleAnimation(Canvas.GetTop(circle), p.Y, new Duration(TimeSpan.FromMilliseconds(500))); Storyboard.SetTarget(animation,circle); Storyboard.SetTargetProperty(animation,new PropertyPath("(Canvas.Top)")); storyboard.Children.Add(animation); if(!Resources.Contains("circleAnimation")) { Resources.Add("circleAnimation",animation); } storyboard.Begin(); } private Rectangle rect; private Ellipse circle; } }
相关文章推荐
- 视频跟踪分割运动中的物体
- 物体的运动(四)
- flash中物体运动基础之三---------摩擦力,重力,风力,推力,旋转
- 运动物体分割之ObjectFlow
- 运动物体跟踪与计数
- 【OpenCV学习笔记】三十九、运动物体检测(一)
- OpenCV中文网站例程——读视频文件和运动物体检测
- 物体运动的切线方向
- js实现多物体运动框架并兼容各浏览器
- 运动物体的检测 初
- JS实现多物体width缓冲运动实例
- OpenCV:运动物体跟踪处理流程
- JS多物体 任意值 链式 缓冲运动
- JS运动-放大缩小物体(从中心)
- flash中物体运动基础之四---------边界判断
- 人的大脑是如何识别运动物体
- 控制物体是否运动的逻辑
- Opencv光流运动物体追踪
- 运动轨迹图表算法-已知两圆通过极坐标转换求两圆切线的公式-用于求两物体运动轨迹
- 【HTML】多物体运动