首页 > 代码库 > C# 对图片进行缩放拖动

C# 对图片进行缩放拖动

创建一个空白窗体,复制以下代码即可

 

    public partial class Form1 : Form    {        int width, height;        decimal percent = 0m;        string path = "C:\\Users\\Public\\Pictures\\Sample Pictures\\Penguins.jpg"; //示例图片        Image img = null;        Rectangle rect;        public Form1()        {            InitializeComponent();            this.DoubleBuffered = true; //双缓冲,防止闪烁            img = Image.FromFile(path);            width = img.Width;            height = img.Height;            percent = Convert.ToDecimal(width) / Convert.ToDecimal(height);            rect = new Rectangle(0, 0, width, height);            this.MouseWheel += new MouseEventHandler(Form1_MouseWheel);            this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);            this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);            this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseUp);        }        void Form1_MouseWheel(object sender, MouseEventArgs e)        {            width += (e.Delta / 5);            height = Convert.ToInt32(width / percent);            this.Invalidate();        }        protected override void OnPaint(PaintEventArgs e)        {            base.OnPaint(e);            rect.Width = width;            rect.Height = height;            e.Graphics.Clear(this.BackColor);            e.Graphics.DrawImage(img, rect);        }        bool leftButton = false;        Point mouseDownPoint;        private void Form1_MouseDown(object sender, MouseEventArgs e)        {            mouseDownPoint = e.Location;            mouseDownPoint.Offset(-rect.X, -rect.Y);            leftButton = e.Button == MouseButtons.Left;            if (leftButton && rect.Contains(e.Location))                Cursor.Current = Cursors.Hand;            else                Cursor.Current = Cursors.Default;        }        private void Form1_MouseMove(object sender, MouseEventArgs e)        {            if (leftButton)            {                if (rect.Contains(e.Location))                {                    Cursor.Current = Cursors.Hand;                    Point nowPoint = e.Location;                    nowPoint.Offset(-mouseDownPoint.X, -mouseDownPoint.Y);                    rect.Location = nowPoint;                    this.Invalidate();                }                else                    Cursor.Current = Cursors.Default;            }        }        private void Form1_MouseUp(object sender, MouseEventArgs e)        {            if (leftButton)            {                Cursor.Current = Cursors.Default;                leftButton = false;            }        }    }

 

C# 对图片进行缩放拖动