如何在开发时在自定义控件中根据用户定义/选择设置填充椭圆的颜色

本文关键字:设置 选择 填充 颜色 定义 用户 开发 自定义控件 | 更新日期: 2023-09-27 18:14:59

这里您可以看到文本的控件属性,并且以类似的方式我想做的事情是- FillEllipse应该能够决定用户想要从属性栏中选择哪种颜色(呈现右手边)。

例如,这里它是"粉红色",所以每当用户拖放我的自定义控件时,他会看到粉红色的椭圆,但我希望用户可以从右侧属性窗口选择任何颜色…为矩形BackColor性质。

public new string Text
{
    get
    {
        return base.Text;
    }
    set
    {
        if (value == base.Text)
            return;
        base.Text = value;
        Invalidate();
    }
}
protected override void OnPaint(PaintEventArgs e)
{
    Graphics gfx = e.Graphics;
    Rectangle rc = ClientRectangle;
    rc.Width -= 1;
    rc.Height -= 1;
    gfx.FillRectangle(new SolidBrush(Parent.BackColor), ClientRectangle);
    gfx.DrawEllipse(new Pen(Color.Blue, 4.0f), rc);
    gfx.FillEllipse(new SolidBrush(Color.Pink), rc);
    //gfx.FillEllipse(true, rc);
    //gfx.FillEllipse(jj, rc);
    //gfx.FillEllipse(
    Font fnt = new Font("Vardhana", (float)rc.Height * 0.3f, FontStyle.Bold,GraphicsUnit.Pixel);
    StringFormat sf = new StringFormat();
    sf.Alignment = StringAlignment.Center;
    sf.LineAlignment = StringAlignment.Center;
    gfx.DrawString(Text,fnt,new SolidBrush(Color.Blue),new RectangleF((float)rc.Left, (float)rc.Top, (float)rc.Width,(float)rc.Height),sf);                
}
protected override void OnPaintBackground(PaintEventArgs pevent)
{
    base.OnPaintBackground(pevent);
}

如何在开发时在自定义控件中根据用户定义/选择设置填充椭圆的颜色

感谢"LarsTech"提供的提示,最后我得到了自己的解决方案,但有你的帮助。所以正如你建议的,我添加了属性

public new Color EllipseColor
        {
            get
            { return base.BackColor; }
            set
            {
                if (value == base.BackColor)
                    return;
                base.BackColor = value;
                Invalidate();
            }
        }

在代码中做了一些替换,它工作得很好。

//    gfx.FillEllipse(new SolidBrush(Color.Pink), rc);
      gfx.FillEllipse(new SolidBrush(EllipseColor), rc);