伙计们,我知道这将是一个简单的答案,但我似乎无法弄明白。我有一个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个像素?
答案 0 :(得分:8)
您需要使用ClientSize.Height
代替Height
。 Height
属性返回整个表单的高度(包括标题栏和窗口的其他部分)。 ClientSize
属性为您提供了可以绘制区域的大小。
有关详细信息,请参阅ClientSize
property at MSDN。
答案 1 :(得分:0)
这段代码在哪里?我注意到它是一个事件处理程序,不一定是MainForm的成员。因此,当您引用this.Height
时,“this”可能不是MainForm(至少我们无法从您包含的代码片段中分辨出来)。通常,最好在MainForm中覆盖OnPaint,而不是附加事件处理程序。在做任何自己的绘画之前,一定要先调用基类的OnPaint。
有关详细信息,请参阅MSDN上的OnPaint。