当前位置:编程学习 > VB >>

vb如何使picturebox控件里的图标变暗?

vb如何使picturebox控件里的图标变暗?
或变成“泛蓝色”的图标?
像 桌面图标被选中后,整个图标呈现出泛蓝色,如何做到?
我取出了选中前后某同一个点的RGB值,然后对比前后RGB值的变化,找不到规律。  --------------------编程问答-------------------- 如果你使用透明图标只要将picturebox的背景色设成蓝色,picturebox与图标一样大就有“泛蓝色”的效果。 --------------------编程问答--------------------
Private Sub Picture1_Click()
Picture1.BackColor = vbBlue
End Sub

Private Sub Picture1_DblClick()
Form2.Show
End Sub --------------------编程问答-------------------- 使用AlphaBlend函数,用法自己GOOGLE一下。 --------------------编程问答-------------------- 简单的方法是用2个图标来显示选取/未选取的
把所有正常的图标放在一个imglist里 把反显或暗色的放到另一个inmglist里
需要显示哪个就换哪个了
--------------------编程问答-------------------- '添加 Command1 Picture1(装载一张图片)

Option Explicit
Private Declare Function SetPixelV Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Byte
Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long
Dim Brightness!, NewColor&, X1&, Y1&, Red&, Green&, Blue&
Private Sub Command1_Click()
   Brightness = 0.5
   For X1 = 0 To Picture1.Width
      For Y1 = 0 To Picture1.Height
         NewColor = GetPixel(Picture1.hDC, X1, Y1)
         Red = (NewColor Mod 256)
         Blue = (Int(NewColor / 65536))
         Green = ((NewColor - (Blue * 65536) - Red) / 256)
         Red = IIf(Red * Brightness > 255, 255, Red * Brightness)
         Red = IIf(Red * Brightness < 0, 0, Red * Brightness)
         Green = IIf(Green * Brightness > 255, 255, Green * Brightness)
         Green = IIf(Green * Brightness < 0, 0, Green * Brightness)
         Blue = IIf(Blue * Brightness > 255, 255, Blue * Brightness)
         Blue = IIf(Blue * Brightness < 0, 0, Blue * Brightness)
         SetPixelV Picture1.hDC, X1, Y1, RGB(Red, Green, Blue)
      Next Y1
      DoEvents
   Next X1
   Picture1.Refresh
End Sub

--------------------编程问答-------------------- 楼上的方法正确,但是效率不高. 改用ALPHABLEND就会快很多.
或者干脆就用两个图标,一个是未选中的效果,一个是选中的效果. --------------------编程问答-------------------- 哈哈要快的话那就用一个 PictureBox 背景是黑的,大小与Picture1相同, 然后再改变这张黑图的 透明度 你想多暗就有多暗 而且是没其它方法比这个快速. --------------------编程问答-------------------- 谢谢cbm666,不过,太暗了,而且是黑色的。桌面上的图标被点击选中后,是泛蓝色的,我想要那种效果。而且,楼上的代码,确实有点慢。我昨晚上夜班,我想一觉醒来后再琢磨琢磨。谢谢你能帮我! --------------------编程问答-------------------- Brightness = 0.5 

0.9 0.8 都能比 0.5亮啊

要加亮 1.5 2.0 --------------------编程问答-------------------- 这里怎么上传图片?我把图片上传到这里了。
http://zhidao.baidu.com/question/134438881.html
我要的是图片中的效果,上面的代码实现不了,主要是背景色都变了。
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,