我正在学习使用Windows Forms for Visual Studio进行C#和图形编程,我遇到了一个问题,调用DrawEllipse并传递一个窗口大小的矩形会导致椭圆在窗口的右侧和底部移出窗口。
下面是绘制椭圆的代码:
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(Color.FromArgb(0, 0, 40));
e.Graphics.DrawEllipse(new Pen(Color.FromArgb(0, 150, 0)), new Rectangle(0, 0, this.Width, this.Height));
}当这段代码运行时,它会产生以下结果:Ellipse drawn in window
我已经尝试过在Form1_Load函数中设置窗口大小,这并没有改变任何东西。是否有一些属性我应该在某个时候进行更改?我发现很难相信this.Width和this.Height实际上与窗口的尺寸不匹配。以前有没有其他人遇到过这个问题?
发布于 2019-11-13 12:49:12
当您使用Form.Width和Form.Height时,您得到的是表单的尺寸,包括非工作区。尝试使用Form.ClientSize.Width和Form.ClientSize.Height。
也就是说。
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(Color.FromArgb(0, 0, 40));
e.Graphics.DrawEllipse(new Pen(Color.FromArgb(0, 150, 0)), new Rectangle(0, 0, this.ClientSize.Width-1, this.ClientSize.Height-1));
}https://stackoverflow.com/questions/58830386
复制相似问题