首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

Silverlight 图片拖拽成效

2012-09-11 
Silverlight 图片拖拽效果暂时百度了下,没看到什么资料想知道各位谁有资料,就来发问了!![解决办法]你可以

Silverlight 图片拖拽效果
暂时百度了下,没看到什么资料
想知道各位谁有资料,就来发问了!!

[解决办法]
你可以参考以下两种方式的拖拽,第一篇文章的拖拽应该是你所需要的。
http://www.cnblogs.com/chengxingliang/archive/2011/02/17/1956856.html
http://www.cnblogs.com/chengxingliang/archive/2011/05/30/2062149.html
[解决办法]
前台:把ellipse控件换成image控件即可
 <Canvas Background="AliceBlue">
<Ellipse MouseMove="Ellipse_MouseMove" MouseLeftButtonDown="Ellipse_MouseLeftButtonDown"
MouseLeftButtonUp="Ellipse_MouseLeftButtonUp" Canvas.Left="50" Canvas.Top="50"
Width="130" Height="120"
Fill="Gold" Stroke="Black" StrokeThickness="3" />
<TextBlock x:Name="tbkpos" FontSize="26" />
</Canvas>
[解决办法]
后台:
 public partial class Move : UserControl
{
public Move()
{
InitializeComponent();
}
//定义当前坐标
Point curPos;
//定义是否移动中布尔变量
bool mouseMoving = false;
private void Ellipse_MouseMove(object sender, MouseEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
if (mouseMoving)
{
//获取当前坐标
double currX = e.GetPosition(null).X - curPos.X;
double currY = e.GetPosition(null).Y - curPos.Y;
//自己添加的代码,控制在某个区域
if (curPos.X > 510 || curPos.Y > 180)
{
mouseMoving = false;
//停止捕获鼠标位置
element.ReleaseMouseCapture();
curPos.X = 0;
curPos.Y = 0;
//恢复鼠标指针样式
element.Cursor = null;
}
else
{
//设置对象坐标
element.SetValue(Canvas.TopProperty, currY + (double)element.GetValue(Canvas.TopProperty));
element.SetValue(Canvas.LeftProperty, currX + (double)element.GetValue(Canvas.LeftProperty));
tbkpos.Text = string.Format("当前坐标:X-{0},Y-{1}", curPos.X.ToString(), curPos.Y.ToString());
//保存当前坐标值
curPos = e.GetPosition(null);
}
}
}

private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
//获取当前坐标
curPos = e.GetPosition(null);
//设置开始移动变量
mouseMoving = true;
if (null != element)
{
//CaptureMouse尝试将鼠标强制捕获到此元素
element.CaptureMouse();
//Cursor获取或设置当鼠标指针悬停在此元素上时显示的光标。
//Cursors.Hand设置鼠标指针为手型
element.Cursor = Cursors.Hand;
}
}

private void Ellipse_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
mouseMoving = false;
//停止捕获鼠标位置
element.ReleaseMouseCapture();
curPos.X = 0;
curPos.Y = 0;
//恢复鼠标指针样式
element.Cursor = null;
}
}
[解决办法]
我也看不懂,要好好研究才得
------解决方案--------------------


image.GetValue(Canvas.LeftProperty)+image.GetValue(Canvas.TopProperty)+DispatcherTimer,必须有DispatcherTimer,否则有抖动现象。

热点排行