0

次のクラスを使用して独自のカスタムラベルを配置したwinformsアプリがあります

public class LabelWithBorder : Label
{
    protected override void OnPaint(PaintEventArgs e)
    {
        ColorMe(e);
    }

    private void ColorMe(PaintEventArgs e)
    {
        Color myColor = Color.FromArgb(104, 195, 198);
        Pen myPen = new Pen(myColor, 1);
        e.Graphics.DrawRectangle(myPen,
        e.ClipRectangle.Left,
        e.ClipRectangle.Top,
        e.ClipRectangle.Width - 1,
        e.ClipRectangle.Height - 1);
        base.OnPaint(e);
    } 
}

結果の LabelWithBorder には、クライアント自身の文献/ウェブサイトなどに一致する色の境界線が含まれています。下の図 (左側) は、最初にどのように見えるか、どのように見えるかを示しています。ただし、私が抱えている問題は、あるウィンドウを別のウィンドウにドラッグするたびに、右側の図のようにラベルが歪むことです。

LabelWithBorder

この歪みの原因と、それを修正する方法を教えてください。

4

2 に答える 2

1

これは機能し、コードは単純です。

private Color myColor = Color.FromArgb(104, 195, 198);
protected override void OnPaint(PaintEventArgs e)
{
    ControlPaint.DrawBorder(e.Graphics, ClientRectangle, myColor, ButtonBorderStyle.Solid);
    base.OnPaint(e);
}
于 2012-05-02T08:50:54.913 に答える
0

ここに示すように、ダブル バッファリングを使用してみてください: https://web.archive.org/web/20140811193726/http://bobpowell.net/doublebuffer.aspx

于 2012-05-02T08:29:19.463 に答える