ImageZoomMainForm.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace MyProject
{
public partial class ImageZoomMainForm : Form
{
Image img;
public Point mouseDown;
public int startx = 0;
public int starty = 0;
public int imgx = 0;
public int imgy = 0;
bool mousepressed = false;
float zoom = 1;
public ImageZoomMainForm(Image imgsrc)
{
InitializeComponent();
img = imgsrc;
// pictureBox1.Width = imgsrc.Width;
// pictureBox1.Height = imgsrc.Height;
Graphics g = this.CreateGraphics();
try
{
zoom = ((float)pictureBox1.Width / (float)img.Width) * (img.HorizontalResolution / g.DpiX);
pictureBox1.Paint += new PaintEventHandler(imageBox_Paint);
pictureBox1.Refresh();
}catch(Exception ex){
MessageBox.Show(ex.Message);
}
}
private void ImageZoomMainForm_Load(object sender, EventArgs e)
{
}
protected override void OnMouseWheel(MouseEventArgs e)
{
float oldzoom = zoom;
if (e.Delta > 0)
{
zoom += 0.1F;
}
else if (e.Delta < 0)
{
zoom = Math.Max(zoom - 0.1F, 0.01F);
}
MouseEventArgs mouse = e as MouseEventArgs;
Point mousePosNow = mouse.Location;
int x = mousePosNow.X - pictureBox1.Location.X;
int y = mousePosNow.Y - pictureBox1.Location.Y;
int oldimagex = (int)(x/oldzoom);
int oldimagey = (int)(y/oldzoom);
int newimagex = (int)(x/zoom);
int newimagey = (int)(y/zoom);
imgx = newimagex - oldimagex + imgx;
imgy = newimagey - oldimagey + imgy;
pictureBox1.Refresh();
}
private void imageBox_Paint(object sender, PaintEventArgs e)
{
e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
e.Graphics.ScaleTransform(zoom, zoom);
if (!mousepressed)
{
e.Graphics.DrawImage(img, 0, 0);
}
else {
e.Graphics.DrawImage(img, imgx, imgy);
}
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)