第二十一章 在 Silverlight 中如何拖动或移动图像或对象

 

实现鼠标 down up move 事件可以在布局面板中使用鼠标拖动或移动嵌套在Border控件中的图像或对象。

.xaml 代码:

< Canvas x : Name ="LayoutRoot" Background ="White">

    <Borderx : Name ="border1"

             Canvas.Top ="100"

             Canvas.Left ="10"

             MouseLeftButtonDown ="border1_MouseLeftButtonDown"

             MouseLeftButtonUp ="border1_MouseLeftButtonUp"

             MouseMove ="border1_MouseMove">

        <Imagex : Name ="MyImage" Source ="images/Basket.png"

                   Stretch="Uniform" ></Image >

    </Border>

</ Canvas >

在上面代码中, Border 控件放置在 Canvas中,值得注意的重要代码是:

MouseLeftButtonDown ="border1_MouseLeftButtonDown"

MouseLeftButtonUp ="border1_MouseLeftButtonUp"

MouseMove ="border1_MouseMove"

上面代码行定义了需要处理 的 3 个事 件。正如其名称所示,需要处理左鼠标按下事件、左鼠标单击并放开事件和左鼠标移动事件。

在后置代码中,当左鼠标按 下,将设置一个全局变量用来标识用户开始移动。在鼠标移到时间,将设置一个鼠标当前位置并为Border控件设置新位置。当左鼠标释放时,将重设全局变量以便不会移动更多的对象。

看后置代码:

public partial class Page : UserControl {

    // Global variable to indicate if user has clicked border

    // and started/stopped moving.

    private bool moving = false ;

    private double offSetX;

    private double offSetY;

    public Page() {

        InitializeComponent();

    }

    private void border1_MouseLeftButtonDown(object sender,

                   MouseButtonEventArgs e) {

        // Left mouse button clicked within border. start moving.

        moving = true ;

        Point offset = e.GetPosition(border1);

        offSetX = offset.X;

        offSetY = offset.Y;

    }

    private void border1_MouseLeftButtonUp(object sender,

                   MouseButtonEventArgs e) {

        // Left mouse button release. Stop moving.

        moving = false ;

    }

    private void border1_MouseMove(object sender,MouseEventArgs e) {

        if (moving) {

            // Get the new mouse pointer position

            Canvas parent = (Canvas )this .border1.Parent;

            Point p = e.GetPosition(parent);

            double x = p.X - offSetX;

            double y = p.Y - offSetY;

            // Set the new position for the border control.

            this .border1.SetValue(Canvas .LeftProperty, x);

            this .border1.SetValue(Canvas .TopProperty, y);

        }

    }

}

 

 

Silverlight入门知识学习目录

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值