如何在开发时在自定义控件中根据用户定义/选择设置填充椭圆的颜色
本文关键字:设置 选择 填充 颜色 定义 用户 开发 自定义控件 | 更新日期: 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);