WPF游戏编程02--物体运动
来源:互联网 发布:怼网络用语什么意思 编辑:程序博客网 时间:2024/05/16 06:54
<Canvas x:Name="container" Width="800" Height="600" Background="Silver" 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.Shapes;namespace WPFApplication{ /// <summary> /// chap02.xaml 的交互逻辑 /// </summary> public partial class chap02 : Window { public chap02() { InitializeComponent(); DrawPentacle(); } private void DrawPentacle() { pentacle = new Polygon(); pentacle.Stroke = System.Windows.Media.Brushes.DarkGray; pentacle.StrokeThickness = 0.1; pentacle.Fill = new SolidColorBrush(Colors.Red); pentacle.Opacity = 0.4; PointCollection pointCollection = new PointCollection(); pointCollection.Add(new Point(0,0)); pointCollection.Add(new Point(100,0)); pointCollection.Add(new Point(100,100)); pointCollection.Add(new Point(0,100)); pentacle.Points = pointCollection; Canvas.SetLeft(pentacle, 0); Canvas.SetTop(pentacle, 0); container.Children.Add(pentacle); CompositionTarget.Rendering += new EventHandler(TimeTick); } private void TimeTick(object sender, EventArgs e) { double pentacleX = Canvas.GetLeft(pentacle); double pentacleY = Canvas.GetTop(pentacle); Canvas.SetLeft(pentacle, (moveTo.X > pentacleX) ? (pentacleX + speed) : (pentacleX - speed)); Canvas.SetTop(pentacle, (moveTo.Y > pentacleY) ? (pentacleY + speed) : (pentacleY - speed)); } private void container_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { moveTo = e.GetPosition(container); } private Polygon pentacle; private int speed = 1; private Point moveTo; }}