无边框Winform,边框为1px

时间:2012-12-04 12:45:14

标签: c# winforms visual-studio-2010 visual-studio user-interface

这可能听起来像一个奇怪的问题,但我有C#Winform,我将FormBorderStyle设置为None。到目前为止一切都很好,但我想知道是否有一种方法可以在我的表单周围添加1px边框?我知道我可以通过创建自己的图像来实现它,但我想知道是否有一种更自然的方式。 感谢

6 个答案:

答案 0 :(得分:8)

我考虑使用图像,或者使用GDI +创建不必要的控件,以免浪费资源。

我认为最简单的解决方案是覆盖表单的OnPaint方法并自己绘制边框:

protected override void OnPaint(PaintEventArgs e)
{
    e.Graphics.DrawRectangle(Pens.Black, this.Bounds);
}

当然,您也可以使用自己的Pen颜色和宽度。

答案 1 :(得分:2)

在表单中使用填充1; 1; 1; 1并为表单设置背景颜色,并将面板放入表单。将白色或其他正常背景颜色设置为面板。并在父控制器中设置dock。表单的背景颜色将作为边框。

答案 2 :(得分:1)

如何只在表单中添加Panel(并设置它的边框)?

答案 3 :(得分:1)

感谢您的建议,我决定创建4个1px标签,并且只是在每边的边缘折腾。那样: 1.如果您使用组合框或面板,他们正在关注自己的业务,而不是占据整个中间位置。 2.您可以选择更改边框颜色。

答案 4 :(得分:0)

没有更多自然非自然方法。这取决于你想要什么。

如果您在表单上放置背景图片,则必须考虑一个事实,即为了能够支持可调整大小,您必须具有可调整大小的背景图像。

如果您只是使用PenBrush在背景上绘制,您也可以支持可调整大小的表单,但如果您想要执行某些操作,则需要更多工作很酷,而不是图像,它更容易。

你可以在表单中嵌入一些控件,并且使用它们的颜色可以感觉到边框。与控件一样,您可以使用Panel,如评论中所建议的那样,可以使用GroupBox创建细长的arround或其他内容。

答案 5 :(得分:0)

我创建了这个方法,因此您可以轻松设置边框,颜色和厚度。

private void customBackgroundPainter(PaintEventArgs e, int linethickness = 2, Color linecolor = new Color(), int offsetborder = 6)
{
    Rectangle rect = new Rectangle(offsetborder, offsetborder, this.ClientSize.Width - (offsetborder * 2), this.ClientSize.Height - (offsetborder * 2));

    Pen pen = new Pen(new Color());
    pen.Width = linethickness;
    if (linecolor != new Color())
    {
        pen.Color = linecolor;
    }
    else
    {
        pen.Color = Color.Black;
    }

    e.Graphics.DrawRectangle(pen, rect);
}

你可以在OnPaintBackground喜欢这个:

中使用它
protected override void OnPaintBackground(PaintEventArgs e)
{
    base.OnPaintBackground(e);
    customBackgroundPainter(
    e,
    linethickness: 3,
    linecolor: Color.DarkOrange,
    offsetborder: 5
    );
}
相关问题