<UserControl x:Class="SilverlightApplication139.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Canvas x:Name="LayoutRoot" Background="White"> </Canvas> </UserControl>
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; namespace SilverlightApplication139 { public partial class MainPage : UserControl { bool trackingMousemove = false; Point mousePoint = new Point(0,0); public MainPage() { InitializeComponent(); Loaded += new RoutedEventHandler(MainPage_Loaded); } void MainPage_Loaded(object sender,RoutedEventArgs e) { for (int i = 0; i < 5; i++) { Rectangle rec = new Rectangle(); rec.Name = i.ToString(); rec.Fill = new SolidColorBrush(Colors.Red); rec.Width = 50; rec.Height = 50; rec.SetValue(Canvas.LeftProperty,0D); rec.SetValue(Canvas.TopProperty,i * (rec.Width + 5)); rec.MouseLeftButtonDown += new MouseButtonEventHandler(Element_MouseLeftButtonDown); rec.MouseMove += new MouseEventHandler(Element_MouseMove); rec.MouseLeftButtonUp += new MouseButtonEventHandler(Element_MouseLeftButtonUp); LayoutRoot.Children.Add(rec); } } /// <summary> /// 鼠标按下控件 /// </summary> private void Element_MouseLeftButtonDown(object sender,MouseButtonEventArgs e) { FrameworkElement element = sender as FrameworkElement; mousePoint = e.GetPosition(null); trackingMousemove = true; element.CaptureMouse(); element.Cursor = Cursors.Hand; } /// <summary> /// 鼠标移动控件 /// </summary> private void Element_MouseMove(object sender,MouseEventArgs e) { FrameworkElement element = sender as FrameworkElement; if (trackingMousemove) { double deltaV = e.GetPosition(null).Y - mousePoint.Y; double deltaH = e.GetPosition(null).X - mousePoint.X; double newTop = deltaV + (double)element.GetValue(Canvas.TopProperty); double newLeft = deltaH + (double)element.GetValue(Canvas.LeftProperty); element.SetValue(Canvas.TopProperty,newTop); element.SetValue(Canvas.LeftProperty,newLeft); mousePoint = e.GetPosition(null); } } /// <summary> /// 鼠标放下控件 /// </summary> private void Element_MouseLeftButtonUp(object sender,MouseButtonEventArgs e) { FrameworkElement element = sender as FrameworkElement; trackingMousemove = false; element.ReleaseMouseCapture(); element.Cursor = null; } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。