C#灰显一个控件并在其上绘制另一个控件

时间:2011-04-22 19:51:00

标签: c# controls drawing overlay progress

我正在使用WinForms。我想制作一个小课程,修改控件以显示它的工作情况。

我想在一个按钮上绘制一个叠加层。它应该是半透明的灰色。 之后我想在它上面绘制一个ProgressBar(在中心)。与This类似,但使用进度条除外。

我怎么能意识到这一点?我不想设置进度条的位置,只是将其绘制在另一个上。

我怎么能这样做? 谢谢:))

1 个答案:

答案 0 :(得分:2)

我之前做过类似的事情。

您需要使用Button.DrawToBitmap(Bitmap, Rectangle)来获取按钮的图像。然后制作位图灰度(there are multiple algorithms available for this;我已成功使用了最后一个,尽管可能不是最初来自此网站)。

现在,我使用整个表单而不是按钮执行此操作,但是我禁用了表单,然后用自己的图像覆盖了整个表单,更改了然后用进度条覆盖它(本身在一个面板中其他控件)。

你可以轻松地禁用按钮,用包含图像的面板和顶部的进度条覆盖它。