我正在使用DrawImage调整图像大小。
Graphics.DrawImage(SourceImage,0,0,200,200);
此处源图像以坐标0开始。
假设我需要动态计算x和y坐标,我该怎么做
默认情况下,图像应该从位置20(即x)和20(即y)开始
如果我调整窗体的大小,它应该根据调整大小的图像按比例计算,也就是说,如果默认情况下它是20,那么窗体调整大小要多少?
感谢
您可以注册到表单的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();