基本思路很简单:
先得到鼠标点击的位置并记录,鼠标移动时得到移动后的位置计算出差值,然后平移。
代码:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 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; namespace DragWindowTest { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private static bool IsDrag = false ; private double enterX; private double enterY; private void Window_MouseLeftButtonDown( object sender, MouseButtonEventArgs e) { IsDrag = true ; enterX = e.GetPosition( this ).X; enterY = e.GetPosition( this ).Y; } private void Window_MouseLeftButtonUp( object sender, MouseButtonEventArgs e) { IsDrag = false ; enterX = 0; enterY = 0; } private void Window_MouseMove( object sender, MouseEventArgs e) { if (IsDrag) { this .Left += e.GetPosition( this ).X - enterX; this .Top += e.GetPosition( this ).Y - enterY; } } } } |