正确调整自定义绘制控件的大小

时间:2012-12-13 16:25:04

标签: c# winforms visual-studio gdi+

我正在尝试制作一个自定义控件,正确绘制自己以填充其当前大小。我假设我应该使用ClientRectangle属性进行大小调整,但客户端矩形的右侧和底部似乎被剪裁了。

使用

填充绘图事件处理程序
Rectangle smaller = new Rectangle(5, 5, ClientRectangle.Width - 10, ClientRectangle.Height - 10);
e.Graphics.DrawRectangle(System.Drawing.Pens.Black, smaller);  
e.Graphics.DrawRectangle(System.Drawing.Pens.Red, ClientRectangle);

得出这个:

ClientRecangle is clipped

我应该使用什么来获得控件的可绘制区域?

1 个答案:

答案 0 :(得分:2)

您可以使用:

ControlPaint.DrawBorder(g, this.ClientRectangle, _
                        Color.Red, ButtonBorderStyle.Solid);

其中Graphics g = e.Graphics;

或者像你一样绘制,但是从宽度和高度减去1(1因为宽度和高度是包含的,但是绘制矩形需要大小独占最后一个像素 - 在内部计算x + w/y + h然后最终在该位置对于最后一个 next 像素,因此我们需要减去一个来获取 last 像素的位置。

rectangle r = this.ClientRectangle;
r.Width -= 1;
r.Height -= 1;

g.DrawRectangle(System.Drawing.Pens.Red, r);

当然这来自OnPaint事件处理程序。