使用ControlPaint.DrawBorder为所有边框着色

时间:2018-05-02 14:40:39

标签: c# winforms custom-painting

我试图通过Paint事件在我的Winform控件上做一些绘画,因为为什么不呢。我已经把它搞定了,因为StackOverlfow告诉我它会起作用:

private void PaintLines(object sender, PaintEventArgs e)
{
    ControlPaint.DrawBorder(e.Graphics, ClientRectangle,
                    Color.Gray, 1, ButtonBorderStyle.Solid,
                    Color.Gray, 1, ButtonBorderStyle.Solid,
                    Color.Gray, 1, ButtonBorderStyle.Solid,
                    Color.Gray, 1, ButtonBorderStyle.Solid);
}

问题是只适用于顶部和左侧边框,而不适用于右侧或底部。这是Designer.cs,因为我怀疑它是如何设置控件的。

this.lblOffset.AutoSize = true;
this.lblOffset.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblOffset.Location = new System.Drawing.Point(3, 25);
this.lblOffset.Name = "lblOffset";
this.lblOffset.Size = new System.Drawing.Size(114, 25);
this.lblOffset.TabIndex = 1;
this.lblOffset.Text = "Offset (V)";
this.lblOffset.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.lblOffset.Paint += new System.Windows.Forms.PaintEventHandler(PaintLines);

所以问题是如何绘制我的四个边框?

1 个答案:

答案 0 :(得分:4)

您使用的是不正确的ClientRectangle - 整个表单中的一个。因此,该矩形的WidthHeight值不适合Label的客户矩形。

使用Label的{​​{1}}代替:

ClientRectangle