【问题标题】:Adding a circular button to a Windows Form向 Windows 窗体添加圆形按钮
【发布时间】:2014-06-08 23:33:15
【问题描述】:

我在 Windows 窗体中创建了一个圆形按钮。按钮很好。唯一的问题是我希望它是与背景不同的颜色,所以我将 BackColor 设置为 goldenRod。然而,它只是在圆形按钮周围创建了一个“goldenRod”立方体......我如何制作它以便只有按钮是彩色的?

public MainForm(){

    InitializeComponent();      
    myButtonObject start = new myButtonObject();
    EventHandler myHandler = new EventHandler(start_Click);
    start.Click += myHandler;
    start.Location = new System.Drawing.Point(5, 5);
    start.Size = new System.Drawing.Size(101, 101);
    start.BackColor=System.Drawing.Color.Goldenrod;
    this.Controls.Add(start);
`}

void start_Click(Object sender, System.EventArgs e)
{
    MessageBox.Show("Start");
}

public class myButtonObject : UserControl
{
    // Draw the new button. 
    protected override void OnPaint(PaintEventArgs e)
    {
        Graphics graphics = e.Graphics;
        Pen myPen = new Pen(Color.Black);
        // Draw the button in the form of a circle
        graphics.DrawEllipse(myPen, 0, 0, 100, 100);
        myPen.Dispose();
    }
}

【问题讨论】:

  • +1 @LarsTech,您还需要重置 BackColor 否则它将填充 UserControl 边界作为该颜色。或者覆盖OnPaintBackground 方法

标签: c# winforms button colors


【解决方案1】:

您需要在OnPaint()方法期间填写您正在绘制的Ellipse

graphics.FillEllipse(Brushes.Goldenrod, new Rectangle(0,0,100,100));
graphics.DrawEllipse(myPen, 0, 0, 100, 100);

然后确保从 MainForm() 构造函数中删除 start.BackColor 属性。

【讨论】:

  • graphics.DrawEllipse(myPen, 0, 0, 100, 100); graphics.FillEllipse(Brushes.Goldenrod, new Rectangle(0,0,100,100)); myPen.Dispose();
  • 这正是我发布的内容。在测试表格上为我工作。
  • 在绘制之前进行填充以避免擦除轮廓。
  • @user3541263 编辑了我的答案,您需要从表单中的按钮中删除 BackColor 属性。 FillEllipse 会为您解决这个问题。
  • 我按照 LarsTech 说的做了,轮廓被保留了,但我还是得到了 goldRod 立方体?
猜你喜欢
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 2020-11-03
  • 2013-12-20
  • 2011-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多