在C#中绘制相对线

时间:2010-05-15 19:19:17

标签: 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);
}

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

2 个答案:

答案 0 :(得分:8)

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

有关详细信息,请参阅ClientSize property at MSDN

答案 1 :(得分:0)

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

有关详细信息,请参阅MSDN上的OnPaint