VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1692|回复: 11

请问 如何 以一个点 为中心 等比例 缩放 图片?

[复制链接]

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-19 08:20:01 | 显示全部楼层 |阅读模式
大家好!
    我在panel中 放置了 一个picturebox ,如果 图片太大 panel不能显示 整个图片,我想以panel显示的那块图片的一部分, 矩形的中心为 中心缩放 等比例图片。
    还有一个问题就是,如何调用 鼠标的中键来实现缩放。
    谢谢!
回复

使用道具 举报

0

主题

14

帖子

12.00

积分

新手上路

Rank: 1

积分
12.00
发表于 2020-1-26 14:18:02 | 显示全部楼层
把picturebox的SizeMode属性设置为Zoom就可以了
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-26 18:09:02 | 显示全部楼层
楼上正解;
回复

使用道具 举报

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-1-31 20:18:01 | 显示全部楼层
那如何 调用 鼠标的中键滑轮来实现缩放? 谢谢
回复

使用道具 举报

1

主题

23

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-2-5 18:30:01 | 显示全部楼层
滑轮好像会有事件触发的
回复

使用道具 举报

0

主题

17

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-9 08:00:01 | 显示全部楼层
偶这有一个demo,很简单的缩放。需要可以联系我。
回复

使用道具 举报

0

主题

17

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-26 14:30:02 | 显示全部楼层
我帖代码在这吧。
回复

使用道具 举报

0

主题

17

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-26 16:15:01 | 显示全部楼层
private Point mousePosition = new Point(0, 0);

        public Form1()
        {
            InitializeComponent();
        }

        private void minPanel_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = this.minPanel.CreateGraphics();
            Image img = Image.FromFile(Application.StartupPath + @"\7.jpg");
            g.DrawImage(img, this.minPanel.ClientRectangle, 0, 0, img.Width, img.Height, System.Drawing.GraphicsUnit.Pixel);

        }

        private void minPanel_MouseDown(object sender, MouseEventArgs e)
        {
            this.controlframe.Left = e.X;
            this.controlframe.Top = e.Y;
            DrawBig();
            DrawSmall();
        }

        private void controlframe_Paint(object sender, PaintEventArgs e)
        {
            DrawSmall();
        }

        private void controlframe_MouseUp(object sender, MouseEventArgs e)
        {
            DrawSmall();

            DrawBig();
        }

        private void controlframe_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                if (e.X >= 0 && e.X <= this.minPanel.ClientRectangle.Width && e.Y >= 0 && e.Y <= this.minPanel.ClientRectangle.Height)
                {
                    this.controlframe.Left = e.X + this.mousePosition.X;
                    this.controlframe.Top = e.Y + this.mousePosition.Y;
                    DrawSmall();
                    DrawBig();
                }
            }
        }

        private void controlframe_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                this.mousePosition.X = this.controlframe.Left;
                this.mousePosition.Y = this.controlframe.Top;
                this.DrawSmall();
                this.DrawBig();
                //this.Dispose;
            }
        }

        private void DrawSmall()
        {
            Graphics g = this.controlframe.CreateGraphics();
            Bitmap bmp = new Bitmap((Bitmap)Bitmap.FromFile(Application.StartupPath + @"\7.jpg"), new Size(this.minPanel.Width, this.minPanel.Height));
            g.DrawImage(bmp, this.controlframe.ClientRectangle, this.controlframe.Left, this.controlframe.Top, this.controlframe.ClientRectangle.Width, this.controlframe.ClientRectangle.Height, System.Drawing.GraphicsUnit.Pixel);
            g.Dispose();
            this.controlframe.Update();
        }

        private void DrawBig()
        {
            Graphics g = this.maxPanel.CreateGraphics();
            Image img = Image.FromFile(Application.StartupPath + @"\7.jpg");
            g.DrawImage(img, this.maxPanel.ClientRectangle, this.controlframe.Left, this.controlframe.Top, this.maxPanel.ClientRectangle.Width, this.maxPanel.ClientRectangle.Height, System.Drawing.GraphicsUnit.Pixel);
            g.Dispose();
            this.minPanel.Update();
        }
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-3-30 13:00:02 | 显示全部楼层
up
回复

使用道具 举报

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-7-5 22:30:01 | 显示全部楼层
滑轮 是有事件 触发  但是如何判断
滑轮 往上 与 往下 滚动 ?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表