Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态设置绘图图像中的x和y坐标_C#_Windows_Resize_Drawimage - Fatal编程技术网

C# 动态设置绘图图像中的x和y坐标

C# 动态设置绘图图像中的x和y坐标,c#,windows,resize,drawimage,C#,Windows,Resize,Drawimage,我正在使用DrawImage调整图像大小 Graphics.DrawImage(SourceImage,0,0,200,200); 在这里,源图像以坐标0开始。 假设我需要动态计算x和y坐标,我该怎么做? 默认情况下,图像应以位置20(即x)和20(即y)开头。 如果我调整窗体的大小,它应该根据调整大小的图像按比例计算,也就是说,如果默认值为20,那么窗体的大小是多少 谢谢您可以注册以调整表单事件的大小,并可以重新绘制图像。有点像 public Form1() {

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

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


谢谢

您可以注册以调整表单事件的大小,并可以重新绘制图像。有点像

    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()你自己

你能澄清你的问题吗?我需要调整图像的大小,使图像从指定的位置开始。你的意思是,在调整图像大小的起始点时会发生变化吗?