winform窗体上图片放大功能

今天遇到点击图片,所点部位实现放大的功能,网上也有很多资料,记录下自己写的。
窗体上放置两个pictureBox控件,第一个添加image,属性SizeMode设置为StretchImage。可以开始写代码了

        //鼠标点击图片放大图片
        private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
            //图片控件的宽高
            double w = pictureBox1.Size.Width;
            double h = pictureBox1.Size.Height;
            //图片的宽高
            int imageWidth = pictureBox1.Image.Size.Width;
            int imageHeight = pictureBox1.Image.Size.Height;
            //鼠标的坐标
            double x = (double)e.X;
            double y = (double)e.Y;
            //鼠标点击坐标对应的图片上的坐标
            var x1 = x / w * imageWidth;
            var y1 = y / h * imageHeight;
            //得到正方形的中心坐标
            var x2 = (int)x1 - 100;
            var y2 = (int)y1 - 100;
            //鼠标点击左上边界时设置截取图片的最小值
            if (x2 <= 0)
            {
                x2 = 0;
            }
            if (y2 <= 0)
            {
                y2 = 0;
            }
            //鼠标点击右下边界时设置截取图片的最小值
            if (imageWidth - x1 < 200)
            {
                x2 = (int)imageWidth - 200;
            }
            if (imageHeight - y1 < 200)
            {
                y2 = (int)imageHeight - 200;
            }
            //重点是下面三行代码,上边的是计算放大图片的坐标
            //根据鼠标中心点获取100像素的正方形图片
            Rectangle rec = new Rectangle(x2, y2,
                                          200, 200);
            Graphics graphics = pictureBox2.CreateGraphics();
            //绘制指定大小的图片
            graphics.DrawImage(pictureBox1.Image, pictureBox2.ClientRectangle, rec, GraphicsUnit.Pixel);
        }

完成

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值