使用WPF Resource以及Transform等技术实现鼠标控制图片缩放和移动的效果

本文介绍如何使用WPF的Resource和Transform技术,实现通过鼠标拖动和滚轮来控制图片的缩放和移动效果。通过定义TranslateTransform和ScaleTransform,结合TransformGroup,可以在XAML中设置并应用到多个Image控件,实现灵活的图片操作功能。
摘要由CSDN通过智能技术生成

程序要实现的目的是通过鼠标来控制图片的缩放和移动的效果,也就是说可以鼠标在程序界面上拖动图片,通过鼠标滚轮放大和缩小图片。这种功能在图片浏览程序里面再普通不过了,一般来说,如果是在MFC或者Winform里面实现这两个功能的话,都是通过处理鼠标的移动和滚轮事件,在这两个事件处理函数里面,获取鼠标的位置和滚轮滚动的偏移量,然后针对性地更改图片的位置和高宽度来做的。

 

比如说,在Winform里面实现鼠标拖拽图片功能的话,代码看起来像下面这样:

 

    // 上一次鼠标移动的位置

    private Point m_PreviousMousePosition;

    private void DoImageMove(object sender, MouseEventArgs e)

    {

        // sender转化成触发鼠标事件的控件,在Winform程序里面,

        // 一般都是PictureBox控件。

        PictureBox picture = sender as PictureBox;

        Debug.Assert(picture != null);

 

        // 或者鼠标在PictureBox控件的相对坐标,下面的GetMouseRelativePositionTo

        // 函数是一个虚构的函数,具体的实现可以Google一下他人的实现方式。

        Point mousePosition = GetMouseRelativePositionTo(picture);

       

        // 移动图片,由于MouseMove事件会在我们移动鼠标的时候触发多次,

        // 因此我们可以通过获取两次鼠标移动之间,鼠标指针位置的偏移量

        // 来知道图片应该移动的偏移量。

        picture.X += mousePosition.X - m_PreviousMousePosition.X;

        picture.Y += mousePosition.Y - m_PreviousMousePosition.Y;

 

        // 将这次鼠标的位置保存下来。

        m_PreviousMousePosition = mousePosition;

}

 

对于通过滚动条来实现图片缩放的代码应该会是这样:

 

    private void MasterImage_MouseWheel(object sender, MouseWheelEventArgs e)

    {

        PictureBox picture = sender as PictureBox;

        Debug.Assert(picture != null);

 

        // 强迫PictureBox控件在更改大小的时候,自动缩放图片

        // 以便填充整个PictureBox控件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值