繁体   English   中英

如何在标签控件周围绘制矩形?

[英]How can i draw a rectangle around a label control?

我向 form1 设计器添加了一个标签控件并为其分配了一些文本。 然后我做了标签鼠标点击事件:

private void label5_MouseClick(object sender, MouseEventArgs e)
        {
            DrawRectangleOnLabel = true;
            label5.Invalidate();
        }

和标签绘制事件:

private void label5_Paint(object sender, PaintEventArgs e)
        {
            if (DrawRectangleOnLabel == true)
            {
                e.Graphics.DrawRectangle(Pens.Red, 0, 0, label5.Width, label5.Height);
            }
        }

但是当我点击标签时我看到的是半矩形,只有矩形的左侧和顶部不存在/显示。

这是因为矩形是用笔宽1绘制的,并且右侧和底部位于标签的边界之外。 只需将其缩小一像素:

 e.Graphics.DrawRectangle(Pens.Red, 0, 0, label1.Width - 1, label1.Height - 1);

或者,您可以改用ControlPaint方法:

ControlPaint.DrawBorder(e.Graphics, label1.DisplayRectangle, 
                        Color.Red, ButtonBorderStyle.Solid);

这使您可以访问各种其他ButtonBorderStyle s(虚线、虚线、插入、开始)。

为什么不在MouseClick事件上尝试BorderStyle属性。 并为所有标签分配单个事件。

label1.MouseClick += new EventHandler(this.AllLable_MouseClick);
label2.MouseClick += new EventHandler(this.AllLable_MouseClick);
label3.MouseClick += new EventHandler(this.AllLable_MouseClick);

private void AllLable_MouseClick(object sender, MouseEventArgs e)
{
    Label lbl = (Label)sender;
    if (lbl.BorderStyle == BorderStyle.FixedSingle)
        lbl.BorderStyle = BorderStyle.None
    else
        lbl.BorderStyle = BorderStyle.FixedSingle
}

对于一个简单的“框”,只需添加一个 Forms.Panel 并将您的控件放在它上面。 然后将面板边框设置为 FixedSingle。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM