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

时间:2012-03-26 13:40:33

标签: c# windows resize drawimage

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

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

此处源图像以坐标0开始 假设我需要动态地计算x和y坐标我该如何去做呢? 默认情况下,图像应从位置20(即; x)和20(即y)开始 如果我调整表单的大小,它应该按照调整大小的图像按比例计算,这意味着,如果默认情况下它是20比表单调整大小多少?

由于

2 个答案:

答案 0 :(得分:0)

您可以注册到表单的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
    }

答案 1 :(得分:0)

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

表单具有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();