C# 用C语言画一条相对线#

C# 用C语言画一条相对线#,c#,.net,winforms,gdi+,C#,.net,Winforms,Gdi+,伙计们,我知道这将是一个简单的答案,但我似乎不明白。我正在尝试构建一个C#Winform应用程序。我试图在表单底部上方60像素处画一条白线。我正在使用以下代码: private void MainForm_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawLine(Pens.White, 10, this.Height-60, 505, this.Height-60); } 很简单,但是没有画线。经过一些调试,我发现它在画线

伙计们,我知道这将是一个简单的答案,但我似乎不明白。我正在尝试构建一个C#Winform应用程序。我试图在表单底部上方60像素处画一条白线。我正在使用以下代码:

private void MainForm_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.DrawLine(Pens.White, 10, this.Height-60, 505, this.Height-60);
}

很简单,但是没有画线。经过一些调试,我发现它在画线,但它在我的表单之外画线。如果我将-60改为-175,那么我可以在表格底部看到它。这就解决了我的问题,除非我的身体高度发生变化,否则这条线会越来越靠近身体底部,直到最后再次脱离身体。我做错了什么?我是否使用了错误的图形单元?或者我需要做更复杂的计算来确定表单底部的60个像素吗?

您需要使用
ClientSize.Height
而不是
Height
Height
属性返回整个表单的高度(包括标题栏和窗口的其他部分)。
ClientSize
属性提供可以绘制的区域大小


有关更多信息,请参阅。

此代码在哪里?我注意到它是一个事件处理程序,不一定是MainForm的成员。因此,当您引用this.Height时,“this”可能不是主要形式(至少我们无法从您包含的代码片段中分辨出来)。通常,最好在主窗体中重写OnPaint,而不是附加事件处理程序。在自己绘制之前,一定要调用基类的OnPaint

有关更多信息,请参阅MSDN