乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 60|回复: 3

[分享]向量在WPF的简单应用

[复制链接]

20

主题

73

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
153
发表于 2010-7-10 12:34:00 | 显示全部楼层 |阅读模式
程序的效果图:

zkyxjnjdlum.jpg

zkyxjnjdlum.jpg



由于程序比较简单,所以我就直接上代码好了.

以下是WPF的XAML代码:
  1.    
  2.         
  3.             
  4.                
  5.             
  6.         
  7.    
  8.    
  9.         
  10.             
  11.                
  12.                
  13.             
  14.             
  15.                
  16.                     
  17.                     
  18.                
  19.                
  20.                     
  21.                     
  22.                     
  23.                     
  24.                     
  25.                     
  26.                     
  27.                
  28.                 X1
  29.                 50
  30.                 Y1
  31.                 200
  32.                 X2
  33.                 150
  34.                 Y2
  35.                 100
  36.                 Length
  37.                 100
  38.                 [B]Apply[/B]
  39.                 [B]Close[/B]
  40.             
  41.             
  42.                 Point1
  43.                 Point2
  44.                 Point3
  45.                 Point4
  46.             
  47.         
  48.    

以下是WPF后台的C#代码:
  1. using System;
  2. using System.Windows;
  3. using System.Windows.Controls;
  4. using System.Windows.Media;
  5. using System.Windows.Shapes;
  6. namespace WpfApplication6
  7. {
  8.     ///
  9.     /// MainWindow.xaml 的交互逻辑
  10.     ///
  11.     public partial class MainWindow : Window
  12.     {
  13.         private Line line1;
  14.         private Line line2;
  15.         public MainWindow()
  16.         {
  17.             InitializeComponent();
  18.             Rectangle rect = new Rectangle();
  19.             rect.Stroke = Brushes.Black;
  20.             rect.Width = canvas1.Width;
  21.             rect.Height = canvas1.Height;
  22.             canvas1.Children.Add(rect);
  23.             line1 = new Line();
  24.             line2 = new Line();
  25.             AddLines();
  26.         }
  27.         private void AddLines()
  28.         {
  29.             Point pt1 = new Point();
  30.             Point pt2 = new Point();
  31.             pt1.X = Convert.ToDouble(this.tbX1.Text);
  32.             pt1.Y = Convert.ToDouble(this.tbY1.Text);
  33.             pt2.X = Convert.ToDouble(this.tbX2.Text);
  34.             pt2.Y = Convert.ToDouble(this.tbY2.Text);
  35.             double length = 0.5 * Convert.ToDouble(tbLength.Text);
  36.             line1 = new Line();
  37.             line1.X1 = pt1.X;
  38.             line1.Y1 = pt1.Y;
  39.             line1.X2 = pt2.X;
  40.             line1.Y2 = pt2.Y;
  41.             line1.Stroke = Brushes.Gray;
  42.             line1.StrokeThickness = 4;
  43.             canvas1.Children.Add(line1);
  44.             Canvas.SetLeft(tbPoint1, pt1.X);
  45.             Canvas.SetTop(tbPoint1, pt1.Y);
  46.             Canvas.SetLeft(tbPoint2, pt2.X);
  47.             Canvas.SetTop(tbPoint2, pt2.Y);
  48.             tbPoint1.Text = "Pt1(" + pt1.ToString() + ")";
  49.             tbPoint2.Text = "Pt2(" + pt2.ToString() + ")";
  50.             Vector v1 = pt1 - pt2;
  51.             Matrix m1 = new Matrix();
  52.             Point pt3 = new Point();
  53.             Point pt4 = new Point();
  54.             m1.Rotate(-90);
  55.             v1.Normalize();
  56.             v1 *= length;
  57.             line2 = new Line();
  58.             line2.Stroke = Brushes.Gray;
  59.             line2.StrokeDashArray = DoubleCollection.Parse("3,1");
  60.             pt3 = pt2 + v1 * m1;
  61.             //m1 = new Matrix();
  62.             //m1.Rotate(90);
  63.             pt4 = pt2 - v1 * m1;
  64.             line2.X1 = pt3.X;
  65.             line2.Y1 = pt3.Y;
  66.             line2.X2 = pt4.X;
  67.             line2.Y2 = pt4.Y;
  68.             canvas1.Children.Add(line2);
  69.             Canvas.SetLeft(tbPoint3, pt3.X);
  70.             Canvas.SetTop(tbPoint3, pt3.Y);
  71.             Canvas.SetLeft(tbPoint4, pt4.X);
  72.             Canvas.SetTop(tbPoint4, pt4.Y);
  73.             pt3.X = Math.Round(pt3.X, 0);
  74.             pt3.Y = Math.Round(pt3.Y, 0);
  75.             pt4.X = Math.Round(pt4.X, 0);
  76.             pt4.Y = Math.Round(pt4.Y, 0);
  77.             tbPoint3.Text = "Pt3(" + pt3.ToString() + ")";
  78.             tbPoint4.Text = "Pt4(" + pt4.ToString() + ")";
  79.         }
  80.         private void Button_Click(object sender, RoutedEventArgs e)
  81.         {
  82.             if (line1 != null)
  83.                 canvas1.Children.Remove(line1);
  84.             if (line2 != null)
  85.                 canvas1.Children.Remove(line2);
  86.             AddLines();
  87.         }
  88.         private void Button_Click_1(object sender, RoutedEventArgs e)
  89.         {
  90.             this.Close();
  91.         }
  92.     }
  93. }

回复

使用道具 举报

20

主题

73

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
153
发表于 2010-7-10 12:36:00 | 显示全部楼层
以下为VS2010的源码工程文件:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:h5xh1slnlaz.rar 
下载次数:0  文件大小:53.95 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]


回复

使用道具 举报

20

主题

73

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
153
发表于 2010-7-10 12:52:00 | 显示全部楼层
为了满足大众的口味,再提供Vs2008的源码工程文件:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:hiogbmsmgjf.rar 
下载次数:0  文件大小:45.43 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]


回复

使用道具 举报

1

主题

13

帖子

2

银币

初来乍到

Rank: 1

铜币
17
发表于 2020-4-3 09:41:00 | 显示全部楼层
感谢大佬
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 02:25 , Processed in 0.988863 second(s), 77 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表