我在我的项目中使用用户定义图片框,它可以正常工作,缩放图像和图像上已经绘制的任何元素(线条,文本,形状......)元素位置被转移到右边缩放后的位置。 当我在缩放后尝试绘制线条时出现问题,请检查此图像
绘制的元素是从鼠标位置偏移绘制的,这是绘图代码
这是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绘图时(每件事情都很好),请看这个图片
变焦后的这一个(移动时应该在鼠标位置绘制线条,看看它是如何用偏移绘制的)