加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 07:24:48 所属栏目:百科 来源:网络整理
导读:这是我想要实现的目标的图像: 如您所见,进度条下方略有反映. 我有一个很大程度上基于此代码的自定义进度条: http://www.codeproject.com/Articles/19309/Vista-Style-Progress-Bar-in-C 注意:我的代码是在VB中. 问题 – 我想在它下面绘制一个进度条的反映
这是我想要实现的目标的图像:

如您所见,进度条下方略有反映.

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

注意:我的代码是在VB中.

问题 – 我想在它下面绘制一个进度条的反映,所以它看起来与我上面给出的图像类似.我被告知,一种方法是使用像素,这需要手动完成.这是唯一的选择吗?还有其他/更简单的方法吗?

我感谢您的帮助.
谢谢!

解决方法

你在找这样的东西吗?

这是代码:

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.B)

这两个:

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

你会得到这样的东西:

您可以使用参数来使阴影更逼真.

解决方案基于这篇文章:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读