动态设置Draw图像中的x和y坐标

本文关键字:坐标 设置 Draw 图像 动态 | 更新日期: 2023-09-27 18:29:05

我正在使用DrawImage调整图像大小。

Graphics.DrawImage(SourceImage,0,0,200,200);

此处源图像以坐标0开始。
假设我需要动态计算x和y坐标,我该怎么做
默认情况下,图像应该从位置20(即x)和20(即y)开始
如果我调整窗体的大小,它应该根据调整大小的图像按比例计算,也就是说,如果默认情况下它是20,那么窗体调整大小要多少?

感谢

动态设置Draw图像中的x和y坐标

您可以注册到表单的ResizeEnd事件,并可以重新绘制图像。类似于;

    public Form1()
    {
        InitializeComponent();
        this.ResizeEnd += new EventHandler(Form1_ResizeEnd);
    }
    void Form1_ResizeEnd(object sender, EventArgs e)
    {
        //draw the image again using the related calculation
    }

根据您的问题,尚不清楚表单的大小与所需坐标的关系。

窗体具有ClientRectangle属性,可以使用该属性计算坐标。例如,如果你想在右下角显示图像,你可以:

protected override void OnPaint(PaintEventArgs e)
{
    int x = this.ClientRectangle.Width - 200;
    int y = this.ClientRectangle.Height - 200;
    e.Graphics.DrawImage(SourceImage, x, y, 200, 200);
}

我假设DrawImage代码在Paint事件处理程序中,然后您可以选择

  • 在窗体构造函数中使用SetStyle(ControlStyles.ResizeRedraw, true);,因此在调整窗体大小时调用Paint
  • Resize事件添加一个事件处理程序,然后自己调用Invalidate();