我使用此功能
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)
没有任何反应,图片仍然淡出我希望将图片恢复为默认值 如何解决这个问题? 非常感谢你
答案 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 )