图片框的透明度

Cod*_*yer 0 vb.net winforms

我只是在我的简单问题中寻找答案.这里是

我有一个透明图像的pricturebox background我将图片框设置backcolor为透明.

之后,图片透明bg.但在我添加此代码后

ìmg1.Left = windows.forms.cursor.Position.X - me.Left ìmg1.Top= windows.forms.cursor.Position.Y - me.Top

'code for using img as cursor

图像bg并不像这样透明

在此输入图像描述

我认为backcolor透明不是真的透明.它只会获取backcolor表单并使用它作为backcolor图像而不是透明.

有没有解决方案让它完全透明?

Zoh*_*led 5

你的假设是正确的.
winforms中的透明度并不意味着对象实际上是透明的.相反,它意味着它将显示它的父对象而不是它的背景,包括它的背景,图像和文本,但不包括任何其他控件,因此你的问题.
由于您最顶部的图片框的父控件不是也不能是其他图片框,因此您最顶部的图片框具有透明背景的事实将无济于事.

不幸的是,使用表单的TransparencyKey属性也无济于事.(它会使所选颜色透明,但会产生意外(通常是不需要的)结果.

为了实现您的目标,您必须在评论中遵循OneFineDay的建议,并使用Graphics自己绘制图像.
幸运的是,这很容易做到:

Public Sub DrawImage(Image as Image, Location As Point)
    Using(Dim g as Graphics = Me.CreateGraphics())
        g.DrawImage(Image, Location)
    EndUsing
End Sub
Run Code Online (Sandbox Code Playgroud)