今天遇到点击图片,所点部位实现放大的功能,网上也有很多资料,记录下自己写的。
窗体上放置两个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);
}
完成