C#图片放大缩小拖动

1.Panel里放picturebox,picturebox大小与panel相同。

放大缩小:

在窗体load事件中加入

this.MouseWheel += splitContainer1_Panel1_MouseWheel;(我用的是splitContainer,panel同理)

void splitContainer1_Panel1_MouseWheel(object sender, MouseEventArgs e)
        {
            Rectangle rectangle=new Rectangle();
            rectangle = splitContainer1.RectangleToClient(this.ClientRectangle);
            if (rectangle.Contains(MousePosition)) //判断鼠标位置是否在图片区域内
            {
                double step = 1.2;//缩放倍率
                if (e.Delta > 0)//放大
                {
                    if (pictureBox3.Height < Screen.PrimaryScreen.Bounds.Height * 4)
                    {
                        pictureBox3.Size = new Size((int)(pictureBox3.Width * step), (int)(pictureBox3.Height * step));//调整picturebox大小
                        int px_add = (int)(pictureBox3.PointToClient(MousePosition).X * (step - 1.0));
                        int py_add = (int)(pictureBox3.PointToClient(MousePosition).Y * (step - 1.0));
                        pictureBox3.Location = new Point(pictureBox3.Location.X - px_add, pictureBox3.Location.Y - py_add);//调整picturebox位置
                    }
                }
                else//缩小
                {
                    if (pictureBox3.Height > splitContainer1.Panel1.Height)
                    {
                        pictureBox3.Size = new Size((int)(pictureBox3.Width / step), (int)(pictureBox3.Height / step));
                        int px_add = (int)(pictureBox3.PointToClient(MousePosition).X * (1.0 - 1.0 / step));
                        int py_add = (int)(pictureBox3.PointToClient(MousePosition).Y * (1.0 - 1.0 / step));
                        pictureBox3.Location = new Point(pictureBox3.Location.X + px_add, pictureBox3.Location.Y + py_add);
                    }
                   
                }
            }

拖动图片

        Point mouseDownPoint = new Point();//鼠标按下时的坐标
        Boolean isSelected = false;
        private void pictureBox4_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                mouseDownPoint.X = Cursor.Position.X;  //注:全局变量mouseDownPoint前面已定义为Point类型
                mouseDownPoint.Y = Cursor.Position.Y;
                isSelected = true;
            }
        }

        private void pictureBox4_MouseMove(object sender, MouseEventArgs e)
        {
            if (isSelected && IsMouseInPanel())//鼠标选中并且在panel内
            {
                this.pictureBox4.Left = this.pictureBox4.Left + (Cursor.Position.X - mouseDownPoint.X);
                this.pictureBox4.Top = this.pictureBox4.Top + (Cursor.Position.Y - mouseDownPoint.Y);
                mouseDownPoint.X = Cursor.Position.X;
                mouseDownPoint.Y = Cursor.Position.Y;
            }
        }

 

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值