|
本帖最后由 Koson 于 2013-10-17 20:54 编辑
虽然几年没有写过Winform code,恰巧这几天在弄一个项目,想要实现淡入淡出的效果。但是一google发现,在Winform中似乎只有窗体(Form)才能实现那效果。无奈,只好改一改思路,随便弄个控件移动的效果来体现一下动态效果了。直接看代码吧:
[code=csharp]/// <summary>
/// Let Control move to special position
/// Create By:Koson
/// Create DT:2013/10/14
/// Update By:
/// </summary>
/// <param name=""></param>
private void slideToDestinationWithSpeed(Control destination, Control control, int delay, int speed, Action onFinish)
{
new Task(() =>
{
int directionX = destination.Left > control.Left ? speed : -speed;
int directionY = destination.Bottom > control.Top ? speed : -speed;
while (control.Left != destination.Left || control.Top != destination.Bottom)
{
try
{
if (control.Left != destination.Left)
{
this.Invoke((Action)delegate()
{
control.Left += directionX;
//Add By:Koson
//Add Dt:2013/10/17
if (control.Left > 3000 || control.Left < -3000)
{
control.Left = destination.Left;
}
});
}
if (control.Top != destination.Bottom)
{
this.Invoke((Action)delegate()
{
control.Top += directionY;
});
}
Thread.Sleep(delay);
}
catch
{
// put your code here
break;
}
}
if (onFinish != null) {
this.Invoke((Action)delegate() {
onFinish();
});
};
}).Start();
}[/code]
这样子可以实现简单的移动效果,如果是在比较短的距离内,这样子来实现动态效果还是稍微能感觉的到,比直接Hide=Visible更有体验。也可以用他来实现图片轮播的效果。当然,代码的逻辑可能还需要小小改动问题不大,简单记录下来。
鼠标移到左下角小黑板上,右边的PopWindow缓慢移出,有比较好的体验不hi感到生硬。
|
|