问个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的位置才能显示,
[解决办法]