问个Panel重绘的问题,
private void panel1_Paint(object sender, PaintEventArgs e)
{
Rectangle rc = e.ClipRectangle;
rc.Width = rc.Width - 1;
rc.Height = rc.Height - 1;
e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.Red)), rc);
}
上面我绘制Panel的边框,
为什么要加两行:
rc.Width = rc.Width - 1;
rc.Height = rc.Height - 1;
才能显示右边框和下边框,
如果不加这两行,那右边框和下边框就不显示出来,为什么?
------解决方案--------------------e.ClipRectangle是剪裁区域,在这个区域之外画任何图形都会被剪掉不能显示,而e.ClipRectangle.Width和e.ClipRectangle.Height是剪裁区域的边界,边界上画图是否剪裁,这就要看微软如何设计,微软设计为在这两条边界上画图也要被剪裁掉不显示,所以你只能把线画在Width和Height各减1的位置才能显示,
------解决方案--------------------
------解决方案--------------------应该差不多吧,不过这是细节问题,因为ClipRectangle大小是控件设置的,不同的控件可能设置不同的范围,也可能有些控件就把ClipRectangle设置为多一个像素,这时候就可以在边框上画,