VB.NET淡出按钮是否正确
如何在VB.NET中正确淡出/淡入按钮?我可以使用以下方法淡出/淡入标签:VB.NET淡出按钮是否正确,vb.net,winforms,button,picturebox,fade,Vb.net,Winforms,Button,Picturebox,Fade,如何在VB.NET中正确淡出/淡入按钮?我可以使用以下方法淡出/淡入标签: Controls(i).ForeColor = Color.FromArgb(255, alpha, alpha, alpha) (其中控件(i)是下一个循环的标签,通过Me中的所有控件。控件;alpha是RGB的值,也是下一个循环的标签) 这对我来说不适用于按钮,因为更改ForeColor会使其余按钮的UI可见 因此,我尝试的方法是使用保存的按钮的资源图像(来自屏幕截图),并创建一个淡入/淡出版本,作为图像显示在图片
Controls(i).ForeColor = Color.FromArgb(255, alpha, alpha, alpha)
(其中控件(i)
是下一个循环的标签,通过Me中的所有控件。控件;alpha
是RGB的值,也是下一个循环的标签)
这对我来说不适用于按钮,因为更改ForeColor
会使其余按钮的UI可见
因此,我尝试的方法是使用保存的按钮的资源
图像(来自屏幕截图),并创建一个淡入/淡出版本,作为图像显示在图片框中
:
Public Function SetImageOpacity(ByVal imgPic As Image, ByVal imgOpac As Double) As Image
Dim bmpPic As New Bitmap(imgPic.Width, imgPic.Height)
Dim grPic As Graphics = Graphics.FromImage(bmpPic)
Dim imgAtt As New ImageAttributes()
Dim cmxPic As New ColorMatrix()
cmxPic.Matrix33 = imgOpac
imgAtt.SetColorMatrix(cmxPic, ColorMatrixFlag.[Default], ColorAdjustType.Bitmap)
grPic.DrawImage(imgPic, New Rectangle(178, 144, bmpPic.Width, bmpPic.Height), imgPic.Width, imgPic.Height, imgPic.Width, imgPic.Height, GraphicsUnit.Pixel, imgAtt)
grPic.Dispose()
imgAtt.Dispose()
Return bmpPic
End Function
(其中,imgPic
是按钮的资源
图像,imgOpac
是比例为1到0的不透明度,其中0是透明的)
然后,我使用此图像设置我的PictureBox
图像:
picbox.Image = SetImageOpacity(My.Resources.Nextbutton, 1)
但是,我遇到了一个小问题,即即使PictureBox
位于坐标178、144
,它显示的图像仍显示在表单的左边缘(即错误的X坐标),Y坐标正确
我有一种感觉,这可能与我调用.DrawImage(
..)
(在函数的第8行)有关,但我不太清楚
如果以前有人问过,请链接 图形grPic
中的坐标是相对于图像本身而不是表单的客户坐标。因此,(0,0)是图像的左上角,而不管该图像最终在某种控件中显示在何处
尝试将其更改为(0,0):
为什么不使用for循环将按钮控件的不透明度从1更改为0(例如0.01?非常感谢,我会尝试!正如我在回答中所解释的那样,这并没有达到我的预期效果-@Idle\u Mind用我的SetImageOpacity
sub解释了这个问题。无论如何,谢谢你的回答!
grPic.DrawImage(imgPic, New Rectangle(0, 0, bmpPic.Width, bmpPic.Height), imgPic.Width, imgPic.Height, imgPic.Width, imgPic.Height, GraphicsUnit.Pixel, imgAtt)