在 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.Widththis.Height 实际上与 window 的尺寸不匹配。以前有其他人 运行 遇到过这个问题吗?

当您使用 Form.WidthForm.Height 时得到的是表单的尺寸,包括非客户区。尝试使用 Form.ClientSize.WidthForm.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));
}