C#用gdi+使图片以鼠标所在点为中心进行缩放
时间: 2023-07-12 15:18:57 浏览: 251
GDI+鼠标绘制常规图形平衡缩放DEMO_C#_doneeuw_多边形绘制_图像绘制_gdi
5星 · 资源好评率100%
以下是使用 GDI+ 在 C# 中实现以鼠标所在点为中心进行缩放的示例代码:
```
public partial class Form1 : Form
{
private Bitmap image;
private float scale = 1.0f;
private Point center;
public Form1()
{
InitializeComponent();
image = new Bitmap("image.jpg");
center = new Point(image.Width / 2, image.Height / 2);
}
private void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
{
float delta = e.Delta / 120.0f;
float newScale = scale + delta;
if (newScale > 0.1f && newScale < 5.0f)
{
float deltaX = e.X - center.X;
float deltaY = e.Y - center.Y;
float newX = center.X - deltaX * delta / scale;
float newY = center.Y - deltaY * delta / scale;
center = new Point((int)newX, (int)newY);
scale = newScale;
pictureBox1.Invalidate();
}
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(Color.White);
float width = image.Width * scale;
float height = image.Height * scale;
float x = center.X - width / 2;
float y = center.Y - height / 2;
e.Graphics.DrawImage(image, x, y, width, height);
}
}
```
在这个示例中,我们在 PictureBox 的 MouseWheel 事件中处理鼠标滚轮事件,计算出新的缩放比例和中心点位置,并在 PictureBox 的 Paint 事件中绘制图片。注意,在绘制图片时,我们需要计算出图片的新宽度和高度以及左上角的坐标。
阅读全文