在图片框缩放后绘制线条

时间:2014-06-23 07:14:55

标签: c# drawing draw

我在我的项目中使用用户定义图片框,它可以正常工作,缩放图像和图像上已经绘制的任何元素(线条,文本,形状......)元素位置被转移到右边缩放后的位置。 当我在缩放后尝试绘制线条时出现问题,请检查此图像

enter image description here

绘制的元素是从鼠标位置偏移绘制的,这是绘图代码

这是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));
    }
}

我认为这个问题是由于变换矩阵,但我不知道如何解决它,所以任何帮助如何解决这个问题?

编辑: 如果问题不明确,问题是: 在图片框中缩放图像并尝试在图像上绘制一条线之后,绘制的线条将从鼠标位置偏移而不是在同一位置绘制,当没有缩放的iam绘图时(每件事情都很好),请看这个图片

enter image description here

变焦后的这一个(移动时应该在鼠标位置绘制线条,看看它是如何用偏移绘制的)

enter image description here

0 个答案:

没有答案