覆盖按钮,从左到右进行背景色填充,就像进度条一样

时间:2014-12-06 10:28:42

标签: c# winforms

我想创建自定义按钮。 是否按钮已添加到控件中,它会覆盖“绘制事件”,并使颜色移动并从左向右填充,这看起来像进度条。

这是我的逻辑。但是,我认为这不是一个正确的方法。请建议正确的方法来获取动画BackColor。 此代码基于按钮大小:

private void customButton()
{
     Button customButton=new Button();
      customButton.Size.width=1;
      custonButton.BackColor=Color.Green;
     this.Controls.Add(customButton);
    for (int i = 0; i<50; i+= 5)
    {

         customButton.Size.width += 1;
    }
}

但是,这个代码创建一个按钮的宽度= 50px;,并且宽度将从左向右扩展,看起来像进度栏 我想创建并覆盖默认的OnPaint事件,创建一个具有50pixel的按钮,backColor将在父控件添加时从左向右移动(动画)。 我是C#的新手,对OnPaint事件了解不多。

1 个答案:

答案 0 :(得分:0)

关于如何更改按钮的背景内容的快速而肮脏的示例。

var bmp = new Bitmap(button1.Width, button1.Height);
var g = Graphics.FromImage(bmp);

var rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
using (var lgb = new LinearGradientBrush(rect, Color.Black, Color.LimeGreen, 0f))
    g.FillRectangle(lgb, rect);

button1.BackgroundImage = bmp;

如果您愿意,可以将按钮本身修改为不具有3D样式,调整大小仍然可以正常工作。这里的要点是绘制它而不是调整它。