改变图片框中的不透明度

时间:2014-07-18 04:27:49

标签: vb.net opacity picturebox

我使用此功能

Public Shared Function ChangeOpacity(ByVal img As Image, ByVal opacityvalue As Single) As Bitmap
Dim bmp As New Bitmap(img.Width, img.Height)
  Dim graphics__1 As Graphics = Graphics.FromImage(bmp)
  Dim colormatrix As New colormatrix
        colormatrix.Matrix33 = opacityvalue
        Dim imgAttribute As New ImageAttributes
        imgAttribute.SetColorMatrix(colormatrix, ColorMatrixFlag.[Default], ColorAdjustType.Bitmap)
        graphics__1.DrawImage(img, New Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, img.Width, img.Height, _
         GraphicsUnit.Pixel, imgAttribute)
        graphics__1.Dispose()
    Return bmp
End Function

我使用此命令

picturebox.Image = ChangeOpacity(picturebox.Image,0.3)

这是工作,图片框的不透明度逐渐消失。 但是当我尝试这个时

picturebox.Image = ChangeOpacity(picturebox.Image,1.0)

没有任何反应,图片仍然淡出我希望将图片恢复为默认值 如何解决这个问题? 非常感谢你

1 个答案:

答案 0 :(得分:0)

ChangeOpacity()函数中的第二个参数是第一个参数中图片的不透明度百分比或因子。

所以(1.0)不会改变不透明度,它会在没有变化的情况下返回图片。

您必须将前一个不透明度值乘以(1)并将图片恢复为默认值,或者使用默认不透明度将图像重新加载到第一个参数。

在你的例子中 The_Current_Opacity * Opacity_Factor = 1

0.3 * Opacity_Factor = 1

使用:picturebox.Image = ChangeOpacity(picturebox.Image, 3.3)

我更喜欢分部(1/0.3)。它比( 3.3)更准确。

这是代码,你可以做数学

dim OpacityPercentage as Single 
OpacityPercentage = 0.3

'To fade out the picturebox's opacity
picturebox1.Image = ChangeOpacity(picturebox1.Image, OpacityPercentage )

'To return picture into default
picturebox1.Image = ChangeOpacity(picturebox1.Image, 1/OpacityPercentage )