Нарисуйте линию после увеличения масштаба изображения

Я использую в моем проекте графическое окно, определяемое пользователем, оно работает нормально с масштабированием изображения и любым элементом, уже нарисованным на изображении (линия, текст, фигуры...). Позиция элемента после масштабирования переносится в правильную позицию, проблема появляется, когда я пытаюсь нарисовать линию после увеличения, проверьте это изображение

введите описание изображения здесь

нарисованный элемент рисуется со смещением от позиции мыши, это код рисования

это функция рисования внутри mt, пользователь определяет графический блок

protected override void OnPaint(PaintEventArgs e)
{
    if (_image == null)
    {
        base.OnPaintBackground(e);
        return;
    }
    Matrix mx = new Matrix(_zoom, 0, 0, _zoom, 0, 0);
    mx.Translate(this.AutoScrollPosition.X / _zoom, this.AutoScrollPosition.Y / _zoom);
    Matrix Tempmx = e.Graphics.Transform;
    e.Graphics.Transform = mx;
    e.Graphics.InterpolationMode = _interpolationMode;//ClipRectangle = {X = 0 Y = 0 Width = 1234 Height = 651}
    e.Graphics.DrawImage(_image, new Rectangle(this.position.X, this.position.Y, this._image.Width, this._image.Height), 0, 0, _image.Width, _image.Height, GraphicsUnit.Pixel);
    base.OnPaint(e);
}

это функция рисования внутри строки спрайта

public override void Draw(Graphics g)
{
    Pen DrawPen = new Pen(new SolidBrush(BaseColor));
    g.DrawLine(DrawPen, this.position, this.position2);

    if (isSelected)
    {
        Pen blackPen = new Pen(new SolidBrush(Color.Black));
        g.DrawRectangle(blackPen, new Rectangle(this.position.X, this.position.Y, 5, 5));
        g.DrawRectangle(blackPen, new Rectangle(this.position2.X, this.position2.Y, 5, 5));
    }
}

Я думаю, что эта проблема связана с матрицей преобразования, но я не уверен, как ее решить, поэтому любая помощь, как решить эту проблему?

РЕДАКТИРОВАТЬ: если проблема не ясна, проблема заключается в том, что: после увеличения изображения в графическом окне и попытки нарисовать линию на изображении, нарисованная линия рисуется со смещением от позиции мыши, не в той же позиции, см. Это изображение когда я рисую без масштабирования (все хорошо)

введите описание изображения здесь

этот после масштабирования (при перемещении линия должна быть нарисована на позиции мыши, посмотрите, как она была нарисована со смещением)

введите описание изображения здесь

0 ответов

Другие вопросы по тегам