我正在使用DrawImage调整图像大小。
Graphics.DrawImage(SourceImage,0,0,200,200);
此处源图像以坐标0开始 假设我需要动态地计算x和y坐标我该如何去做呢? 默认情况下,图像应从位置20(即; x)和20(即y)开始 如果我调整表单的大小,它应该按照调整大小的图像按比例计算,这意味着,如果默认情况下它是20比表单调整大小多少?
由于
答案 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();