高分请问PNG图片做的透明窗体显示控件的有关问题
高分请教PNG图片做的透明窗体显示控件的问题
用GDI+加载PNG图片,然后用UpdateLayeredWindow函数设置透明,窗体透明的效果令人满意,但是窗体上所有的控件也都不见了,想了好多方法都不行,请教一下有什么方法能解决这个问题啊?
在网上搜了一下,有人说可以通过两个窗体来实现,PNG透明窗体放在下面,另做一个窗体盖住它,但是这样不但麻烦,还会带来许多其他问题,所以期待有更好的方法,谢谢!
ps:由于窗体不规则且带阴影,用其他创建不规则窗体的方法不好实现,所以才想到了用PNG图片来做。
------解决方案--------------------
这个问题你最好用VB.NET或VB2010之类版本,用VB6很难搞定
------解决方案--------------------
我只用过GDI+显示PNG图片,还真试验过楼主所说的效果。如楼主愿意,可以把代码公布出来,让我见识一二。
------解决方案--------------------
虽然看不见控件,但控件仍然是在的,可以响应事件,如果只有简单的控件就自绘,如标签、按钮,用几幅小图片贴上去就行了,复杂的控件采用两个窗口还是比较不错的方案;
从资源文件中直接加载PNG图片比较简单的
用GDI+加载PNG图片,然后用UpdateLayeredWindow函数设置透明,窗体透明的效果令人满意,但是窗体上所有的控件也都不见了,想了好多方法都不行,请教一下有什么方法能解决这个问题啊?
在网上搜了一下,有人说可以通过两个窗体来实现,PNG透明窗体放在下面,另做一个窗体盖住它,但是这样不但麻烦,还会带来许多其他问题,所以期待有更好的方法,谢谢!
ps:由于窗体不规则且带阴影,用其他创建不规则窗体的方法不好实现,所以才想到了用PNG图片来做。
------解决方案--------------------
这个问题你最好用VB.NET或VB2010之类版本,用VB6很难搞定
------解决方案--------------------
我只用过GDI+显示PNG图片,还真试验过楼主所说的效果。如楼主愿意,可以把代码公布出来,让我见识一二。
------解决方案--------------------
虽然看不见控件,但控件仍然是在的,可以响应事件,如果只有简单的控件就自绘,如标签、按钮,用几幅小图片贴上去就行了,复杂的控件采用两个窗口还是比较不错的方案;
从资源文件中直接加载PNG图片比较简单的
- VB code
Public Declare Sub CreateStreamOnHGlobal Lib "ole32.dll" (ByRef hGlobal As Any, ByVal fDeleteOnRelease As Long, ByRef ppstm As Any) Public Declare Function GdipLoadImageFromStream Lib "gdiplus" (ByVal Stream As Any, ByRef image As Long) As Long Public Function LoadPng(resId As Long, resType As String) As Long '参数是资源ID和类型 Dim img As Long Dim ResData() As Byte, Stream As Object ResData = LoadResData(resId, resType) CreateStreamOnHGlobal ResData(0), False, Stream GdipLoadImageFromStream Stream, img Set Stream = Nothing LoadPng = img '函数返回png图片的句柄 End Function