vb.net - winforms VB中绘制进度条控件的反射

标签 vb.net winforms graphics progress-bar

这是我想要实现的目标的图像:

http://www.findmysoft.com/img/news/Windows-7-Beta-1-with-Updated-Boot-Screen-Drops-Next-Month.jpg

如您所见,进度条下方有轻微的反射。

我有一个很大程度上基于此代码的自定义进度条:
http://www.codeproject.com/Articles/19309/Vista-Style-Progress-Bar-in-C

注意:我的代码是用 VB 编写的。

问题 - 我想在其下方绘制进度条的反射,使其看起来与我上面给出的图像类似。有人告诉我,一种方法是使用像素,这需要手动完成。这是唯一的选择吗?还有其他/更简单的方法吗?

感谢您的帮助。 谢谢!

最佳答案

您正在寻找这样的东西吗?

enter image description here

这是代码:

Dim pgBarReflection As New Bitmap(ProgressBar1.Width, 20)
ProgressBar1.DrawToBitmap(pgBarReflection, ProgressBar1.ClientRectangle)

For x As Integer = 0 To pgBarReflection.Width - 1
  For y As Integer = 0 To pgBarReflection.Height - 1
    Dim alpha = 255 - 255 * y \ pgBarReflection.Height
    Dim clr As Color = pgBarReflection.GetPixel(x, y)
    clr = Color.FromArgb(alpha, clr.R, clr.G, clr.B)
    pgBarReflection.SetPixel(x, y, clr)
  Next y
Next x

Me.CreateGraphics.DrawImage(pgBarReflection, New Point(ProgressBar1.Left, ProgressBar1.Bottom + 10))

如果你想要灰度阴影,请替换此行

clr = Color.FromArgb(alpha, clr.R, clr.G, clr.B)

与这两个:

Dim greyScale As Integer = CInt(clr.R * 0.3 + clr.G * 0.59 + clr.B * 0.11)
clr = Color.FromArgb(alpha, greyScale, greyScale, greyScale)

你会得到这样的东西:

enter image description here

您可以使用参数来使阴影更加真实。

解决方案基于这篇文章:

Draw an image with gradient alpha (opacity) values in VB.NET

关于vb.net - winforms VB中绘制进度条控件的反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13326391/

相关文章:

java - 是否可以将 JComponent 及其所有子组件绘制到另一个组件?

c# - 在 WinForms 中使用已编译的 WPF 控件(dll)?

vb.net - 如何确定扬声器是否插入或拔出

c# - 单独线程中的计时器滴答事件

c# - 如何在 C# 中的鼠标单击事件中的窗体中的图像上绘制文本

c# - 无论图像颜色如何,在图像上绘制可见文本

javascript - 如何将脚本正确添加到控件?

c# - ASP.NET 页面生命周期 : How Page. ProcessRequest 执行事件和内部方法?

c# - 制作启动画面

c# - Windows 窗体应用程序中窗体加载期间触发的 SelectedValueChange() 事件