Move事件,拖动控件的问题,内附代码,请大家帮帮忙吧~!
用鼠标拖动容器,然后让容器上的控件按照鼠标走的值去走,用的是故事版,但是拖动快的时候,为什么会串位呢?

public Point mouseStart , mouseEnd;//记录鼠标的起始点,来计算移动位置
public void MouseLeftDown( object sender , EventArgs e )
{
mouseStart=Mouse.GetPosition( this );
}
public void Move( object sender , EventArgs e )
{
mouseEnd=Mouse.GetPosition( this );
double y=mouseEnd.Y-mouseStart.Y;
//Menumain 是用户控件,grid是容器
Menumain menu=grid.Children[1] as Menumain;
DB.DB.timeSpan=0;
items item=null;
if ( y!=0 )
{
for ( int i=0 ; i<menu.sdf.Length ; i++ )
{
item=menu.sdf[i] as items;
if ( item.Margin.Top+y>=336 && item.Margin.Top+y<=528.5 )
{
storyTapMove( item , 216 , item.Margin.Top+menuSlidePointY( item.Margin.Top , i , y ) , DB.DB.timeSpan );
DB.DB.NowIng=i+1;//这个是记录中心位置的
}
else
{
storyTapMove( item , 240, item.Margin.Top+menuSlidePointY( item.Margin.Top , i , y ) , DB.DB.timeSpan );
}
}
}
}
#region 返回控件应移动的距离(正常值和特殊值的正常比例)
/// <summary>
/// 返回控件应移动的距离(正常值和特殊值的正常比例)
/// </summary>
/// <param name="top"></param>
/// <param name="i"></param>
/// <param name="y"></param>
/// <returns></returns>
public float menuSlidePointY( double top , int i , float y )
{
float temp=y/70;
if ( top>382 &&top <675 )
{
return 293*temp;
}
else if ( top<382 && top>290 )
{
return 92*temp;
}
return y;
}
#endregion
#region Thickness移动主菜单动画(按margin移动)
/// <summary>
/// Thickness移动主菜单动画(按margin移动)
/// </summary>
/// <param name="item">移动控件</param>
/// <param name="setLeft">控件靠左侧宽度</param>
/// <param name="setTop">控件靠顶部宽度</param>
public void storyTapMove( items item , double setLeft , double setTop , int timeSpan )
{
Storyboard sb = new Storyboard( );
//sb.FillBehavior = FillBehavior.Stop;
//item.BeginStoryboard( sb , HandoffBehavior.SnapshotAndReplace , true );
TransformGroup tfg = new TransformGroup( );
ScaleTransform sf = new ScaleTransform( );
SkewTransform qx = new SkewTransform( );
RotateTransform xz = new RotateTransform( );
TranslateTransform py = new TranslateTransform( );
tfg.Children.Add( sf );
tfg.Children.Add( qx );
tfg.Children.Add( xz );
tfg.Children.Add( py );
ThicknessAnimationUsingKeyFrames animatX=new ThicknessAnimationUsingKeyFrames( );
SplineThicknessKeyFrame sk=new SplineThicknessKeyFrame( new Thickness( setLeft , setTop , 0 , 0 ) , KeyTime.FromTimeSpan( new TimeSpan( 0 , 0 , 0 , 0 , timeSpan ) ) , new KeySpline( 0.37 , 1 , 1 , 1 ) );
animatX.KeyFrames.Add( sk );
Storyboard.SetTarget( animatX , item );
Storyboard.SetTargetProperty( animatX , new PropertyPath( "(FrameworkElement.Margin)" ) );
sb.Children.Add( animatX );
sb.Begin( );
}
#endregion
...全文
相关推荐
Android 控件拖动
Android 控件 拖动 简单 democratic
android拖动控件,解决回到原点,拖动自动靠边,点击不灵敏
android拖动控件,解决回到原点,拖动自动靠边,点击不灵敏
Android自定义可以拖动的控件
Android自定义可以随意拖动的控件,包括可拖动的ImageView、TextView.用Android studio编写的代码。
Delphi实现控件拖动及改变大小
自己根据别人总结出来的三种控件的拖动及更改控件大小的方法.
android控件在界面上自由拖动位置显示
android 自定义拖动控件。控件可以在界面上自由拖动位置显示。自定义图标背景颜色及默认显示的位置。


