Как сделать масштабирование содержимого формы (WinForms) при прокручивании колеса мышки?
Пытаюсь сделать так, чтобы изображение в форме масштабировалось при прокручивании колеса мышки. По задумке масштабирование должно выполняться относительно местоположения курсора, но в реальности изображение дергается в произвольную точку (логику так и не уловил), а уже затем масштабируется относительно нее. Подскажите, пожалуйста, что я делаю неправильно? Заранее спасибо!
internal class Program : Form
{
Point point;
float zoomFactor = 1.0f;
public Program()
{
Paint += MyPaint;
MouseWheel += MyWheel;
}
private void MyWheel(object sender, MouseEventArgs e)
{
point = e.Location;
zoomFactor += (float)e.Delta / 1200;
Invalidate();
}
private void MyPaint(object sender, PaintEventArgs e)
{
e.Graphics.TranslateTransform(point.X, point.Y);
e.Graphics.ScaleTransform(zoomFactor, zoomFactor);
e.Graphics.TranslateTransform(-point.X, -point.Y);
var pen = new Pen(Color.Red, 4);
e.Graphics.DrawLine(pen, 0, 0, 500, 500);
}
public static void Main()
{
Application.Run(new Program() { Width = 600, Height = 600 });
}
}