我正在尝试制作一个自定义控件,正确绘制自己以填充其当前大小。我假设我应该使用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);
得出这个:
我应该使用什么来获得控件的可绘制区域?
答案 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
事件处理程序。