在 C# 中使用 Visual Studio 中的 Windows 表单,有没有办法让 Graphics.DrawEllipse 函数完全按照指定的方式绘制椭圆?
Using Windows Forms in Visual Studio with C#, is there a way to get the Graphics.DrawEllipse function to draw the ellipse exactly as specified?
我正在使用 Windows Forms for Visual Studio 学习 C# 和图形编程,我 运行 遇到了一个问题,即调用 DrawEllipse 并传递大小为window 导致椭圆在右侧和底部超出 window。
下面是绘制椭圆的代码:
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));
}
当此代码 运行s 时,它会产生以下结果:
Ellipse drawn in window
我已经尝试在 Form1_Load 函数中设置 window 大小,但没有任何改变。
是否有一些 属性 我应该在某个时候改变?我很难相信 this.Width
和 this.Height
实际上与 window 的尺寸不匹配。以前有其他人 运行 遇到过这个问题吗?
当您使用 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));
}
我正在使用 Windows Forms for Visual Studio 学习 C# 和图形编程,我 运行 遇到了一个问题,即调用 DrawEllipse 并传递大小为window 导致椭圆在右侧和底部超出 window。
下面是绘制椭圆的代码:
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));
}
当此代码 运行s 时,它会产生以下结果: Ellipse drawn in window
我已经尝试在 Form1_Load 函数中设置 window 大小,但没有任何改变。
是否有一些 属性 我应该在某个时候改变?我很难相信 this.Width
和 this.Height
实际上与 window 的尺寸不匹配。以前有其他人 运行 遇到过这个问题吗?
当您使用 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));
}