2010-05-15 67 views
3

家伙相对行了,我知道这是要变成一个简单的答案,但我似乎无法弄清楚。我有一个C#Winform应用程序,我正在尝试构建。我试图在窗体底部上方画一个60像素的白线。我正在使用这个代码:绘制在C#

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

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

回答

8

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

欲了解更多信息,请参阅ClientSize property at MSDN

0

此代码是什么?我注意到它是一个事件处理程序,不一定是MainForm的成员。所以,当你引用this.Height时,“this”可能不是MainForm(至少我们无法从你包含的代码片断中得知)。一般来说,最好在你的MainForm中重写OnPaint,而不是附加一个事件处理程序。在做任何你自己的绘画之前,一定要调用基类的OnPaint。

欲了解更多信息,请参阅OnPaint在MSDN。