问题不在于我不知道如何使无边框形式重新调整大小,或者如何绘制边框。问题是当您使用该自定义边框重新调整表单大小时会发生什么。
这是截图,因为我不知道如何解释它:
以下是我创建边框(当前)的方法:
private void Form1_Paint(object sender, PaintEventArgs e)
{
int width = 1;
Rectangle rec = this.ClientRectangle;
ButtonBorderStyle bbs = ButtonBorderStyle.Solid;
Color clr = Color.Gray;
ControlPaint.DrawBorder(e.Graphics, rec, clr, width, bbs, clr, width, bbs, clr, width, bbs, clr, width, bbs);
}
重新确定无边界形式的尺寸;我为项目创建了一个存储库 Resize Custom Border - Bitbucket
我不知道为什么会这样,所以我不知道从哪里开始。我只需要绘制一个边框而不用它。我尝试了其他方法来绘制一个,但结果是一样的。
希望这个和存储库对任何试图做同样事情的人都有用。
感谢您抽出时间阅读,如果您这样做了。
答案 0 :(得分:1)
尝试使用Graphics.DrawRectangle
代替DrawBorder
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Single fWidth = 5.0f;
Rectangle r = new Rectangle(0,0,this.ClientRectangle.Width-1,this.ClientRectangle.Height-1);
e.Graphics.DrawRectangle(new Pen(Color.Gray, fWidth), r);
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
this.Invalidate();
}
答案 1 :(得分:0)
使用图形库:
第1步:覆盖主窗体的OnPaint处理程序
第2步:定义一个覆盖当前表单的矩形
第3步:绘制定义的矩形
protected override void OnPaint(PaintEventArgs e)
{
Rectangle r = new Rectangle(0,0,this.ClientRectangle.Width-1,this.ClientRectangle.Height-1);
e.Graphics.DrawRectangle(new Pen(Color.Gray, 1.0f), r);
}
您也可以使用条件语句来实现:
this.form.Resize += // some handler1
//in hadler1
{
this.form.Paint += // Your new paint handler2
}
//in handler2
{
Rectangle r = new Rectangle(0,0,this.ClientRectangle.Width-1,this.ClientRectangle.Height-1);
e.Graphics.DrawRectangle(new Pen(Color.Gray, 1.0f), r);
}