精英盒子 -> 程序设计 -> VB的picture怎么实现缓慢浮现(透明度由0逐渐增加) [打印本页]

scxyscxy 2011-08-21 20:43

VB的picture怎么实现缓慢浮现(透明度由0逐渐增加)

如题。。。

abreto 2011-08-21 20:46
很久没有玩vb了

jybox 2011-08-21 20:46
有个API可以实现窗口的透明度,但是控件的......貌似没法弄


如果非要弄,那就弄个Timer,定时对图像,挨个像素点进行计算吧......
不过貌似效率太低了

jybox 2011-08-21 20:46
.Net的控件貌似都有透明度的属性......

scxyscxy 2011-08-21 20:48
我是用6.0的呃。。。。

jybox 2011-08-21 20:52
果断玩QT...

littlepig 2011-08-22 18:11
picturebox是有hwnd的……

littlepig 2011-08-22 18:36
http://wenwen.soso.com/z/q258134892.htm

jybox 2011-08-22 19:03
我也惭愧啊

pcliker 2011-08-22 21:40
表示用Flash毫无压力

linsoft 2011-08-29 23:49
  1. 'API
    Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdc1 As Long, ByVal x1 As Long, ByVal Y1 As Long, ByVal W1 As Long, ByVal H1 As Long, ByVal hdc2 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal W2 As Long, ByVal H2 As Long, ByVal BLENDFUNCT As Long) As Long
    Private Declare Sub RtlMoveMemory Lib "kernel32.dll" (Destination As Any, Source As Any, ByVal Length As Long)
    '常量
    Private Const AC_SRC_OVER = &H0
    '结构
    Private Type BLENDFUNCTION
        BlendOp As Byte
        BlendFlags As Byte
        SourceConstantAlpha As Byte
        AlphaFormat As Byte
    End Type

    '定义新半透明函数
    Public Sub TouMing(Outpic As PictureBox, Inpic As PictureBox, x As Long, y As Long, Lv As Single)
        Dim BF As BLENDFUNCTION, lBF As Long

        If Lv > 1 Or Lv < 0 Then
            Exit Sub
        End If

        With BF
            .BlendOp = AC_SRC_OVER
            .BlendFlags = 0
            .AlphaFormat = 0
            .SourceConstantAlpha = 255 * Lv
        End With

        Outpic.AutoRedraw = True
        Inpic.AutoRedraw = True
        Outpic.ScaleMode = vbPixels
        Inpic.ScaleMode = vbPixels

        RtlMoveMemory lBF, BF, 4
        AlphaBlend Outpic.hDC, x, y, Inpic.ScaleWidth, Inpic.ScaleHeight, Inpic.hDC, 0, 0, Inpic.ScaleWidth, Inpic.ScaleHeight, lBF
    End Sub


把上面的代码放在一个模块里,再在窗体里调用函数TouMing(Outpic As PictureBox, Inpic As PictureBox, x As Long, y As Long, Lv As Single) 。

Outpic 为输出PICTUREBOX控件,Inpic为输入PICTUREBOX控件,X为输出X,Y为输出Y,Lv为透明度(0——1)



代码写的好辛苦,加分!!!!!!!




jybox 2011-08-30 09:27
我表示这个看过了,明显百度知道的嘛

不过看起来你是新用户啊,欢迎。。。

linsoft 2011-08-30 22:31
我这个不是百度知道的,是我几年前就做VB高效图像处理时收藏的。而且我还把这些代码用VB的模块封装了,方便使用。不要认为核心和百度知道一样,就乱说啊!!!

jybox 2011-08-30 22:39
可是最后一句暴露了。。。。。。。

代码写的好辛苦,加分!!!!!!!

linsoft 2011-09-04 00:12
“这些代码用VB的模块封装了,方便使用”,没有写代码那怎样封装?封装的还出了几次问题!
不要乱说,不想加分就不加,不要乱诬蔑别人!!!

outman 2011-09-04 11:41
”没有写代码那怎样封装?“我表示搬下来加几句代码调试一下就可以了 就算不是也没有加分的价值

jybox 2011-09-05 19:29
我表示没看懂14楼

linsoft 2011-09-11 00:38
我表示,上面那贴是为了澄清那代码不是百度的(是不是要证据才信?),而且又说了“不想加分就不加”,这些都是
对JYBOX说的,与你(outman)何干?

况且,“看起来容易,做起来难”这句话大家都知道。你觉得那封装代码很容易,那你就试试封装,看看你用了多少时间,花费了多少精力,你就知道我的感受了!!!

jybox 2011-09-11 02:31
好吧,我确实判断错了




Powered by phpwind v8.7 Code ©2003-2011 phpwind
Time 0.043063 second(s),query:5 Gzip enabled