silverlight 2.0 实现拖动
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="600" Height="400">
<Canvas x:Name="myPhoto" Background="#CDFCAE">
</Canvas>
</UserControl>
using System;
using System.Collections.Generic;
using System.Linq;
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;
using System.Windows.Media.Imaging;
using System.Windows.Interop;
using System.Windows.Browser;
namespace TestPhoto
{
public partial class Page : UserControl
{
bool trackingMouseMove = false;
double deltax;
double deltay;
Point _point;
public Page()
{
InitializeComponent();
this.Loaded+=new RoutedEventHandler(Page_Loaded);
}
void Page_Loaded(object sender, RoutedEventArgs e)
{
Image img = new Image();
img.Source = new BitmapImage(new Uri("gigi_01.jpg",UriKind.Relative));
img.Width = 400;
img.Height = 400;
img.MouseLeftButtonDown+=new MouseButtonEventHandler(img_MouseLeftButtonDown);
img.MouseMove+=new MouseEventHandler(img_MouseMove);
img.MouseLeftButtonUp+=new MouseButtonEventHandler(img_MouseLeftButtonUp);
Canvas.SetLeft(img, 100);
Canvas.SetTop(img,100);
img.RenderTransform = new TranslateTransform();
this.myPhoto.Children.Add(img);
}
void img_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
FrameworkElement fe = (FrameworkElement)sender;
fe.Cursor = Cursors.Arrow;
trackingMouseMove = false;
}
void img_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement fe = (FrameworkElement)sender;
if (fe != null)
{
trackingMouseMove = true;
fe.CaptureMouse();
_point = e.GetPosition(null);
fe.Cursor = Cursors.Hand;
deltax = e.GetPosition(null).X - ((TranslateTransform)fe.RenderTransform).X;
deltay = e.GetPosition(null).Y - ((TranslateTransform)fe.RenderTransform).Y;
}
}
void img_MouseMove(object sender,MouseEventArgs e)
{
if (trackingMouseMove)
{
Image img = (Image)sender;
((TranslateTransform)img.RenderTransform).X = e.GetPosition(null).X - deltax;
((TranslateTransform)img.RenderTransform).Y = e.GetPosition(null).Y - deltay;
}
}
}
}
Silverlight中提供了四种基本变换:旋转变换 (RotateTransform )、缩放变换(ScaleTransform)、倾斜变换(SkewTransform)、移动变换(TranslateTransform)和两种复杂 的变换:变换组(TransformGroup)、矩阵变换(MatrixTransform ),这些变换可以运用到任何控件或者图形图像。这里用到的是TranslateTransform
浙公网安备 33010602011771号