我不确定您到底想要什么,但是您可以绘制完整的不透明 PNG,例如,您可以将表单的 opacity 属性设置为 %75。
编辑:如果上面的答案不是您想要的,您可以创建一个具有透明背景的 PictureBox,将其设置为填充并且不要将该控件放在前面。当你想显示图像时,你会把它带到前面。通过以下方式设置图像的不透明度(如果需要):
Public Function SetImgOpacity(ByRef imgPic As Image, ByVal imgOpac As Single) As Image
Dim bmpPic As New Bitmap(imgPic.Width, imgPic.Height)
Dim gfxPic As Graphics = Graphics.FromImage(bmpPic)
Dim cmxPic As New ColorMatrix()
Dim iaPic As New ImageAttributes()
cmxPic.Matrix33 = imgOpac
iaPic.SetColorMatrix(cmxPic, ColorMatrixFlag.[Default], ColorAdjustType.Bitmap)
gfxPic.DrawImage(imgPic, New Rectangle(0, 0, bmpPic.Width, bmpPic.Height), 0, 0, imgPic.Width, imgPic.Height, GraphicsUnit.Pixel, iaPic)
gfxPic.Dispose()
iaPic.Dispose()
Return bmpPic
End Function
现在您可以将 PictureBox 的图像设置为新的半透明图像。
编辑2:这是一个好技巧
使您的表单不可见并使用计时器使用它,其中资源中的“a”是您的图像:
Dim x As Graphics = Graphics.FromHwnd(IntPtr.Zero)
x.DrawImage(My.Resources.a, 0, 0)
您可以在没有表格的情况下在屏幕上绘图。但是,您需要连续绘制,因为任何其他绘图都可能打破您的错觉。