专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VB Dotnet

怎么将图标变成灰色

发布时间:2011-06-23 14:18:58 文章来源:www.iduyao.cn 采编人员:星星草
如何将图标变成灰色
图标需要放到treeview里的node用,而node必须是enable=tree的,所以不用想着enale=false来达到目的了.
图标是从指定窗口的图标句柄动态获得的,所以也不用想着做两张图片了.
需要的图片灰色颜色为enalbe=false时是相同的.
用以设置代表对象的visable=false时的图表状态,而正常时候就用正常图标.

初步设想是用gdi+,但是不太熟悉,而且简单查了下貌似没有直接变成灰度图的功能.
貌似有个矩阵转换啥的,但是不会用.

越简单越好,越快越好,因为是枚举系统窗口列表(包括控件的)所以速度比较重要.

其实这个软件就是要完善spy++

打算增加修改窗体样式功能,当然,这部分获取窗口列表我也打算使用窗口本来的图标.开发完毕为免费软件.希望大家支持下.

请各大神提供思路或者方案.

------解决方案--------------------
/// <summary>
        /// 灰度处理。(对于菜单项图标,透明度还要加倍。)
        /// </summary>
        /// <param name="bmp">原始图像。</param>
        /// <returns>灰度和透明度加倍的图像。</returns>
        public static Bitmap ToGray(Bitmap bmp)
        {
            for (int i = 0; i < bmp.Width; i++)
            {
                for (int j = 0; j < bmp.Height; j++)
                {
                    //获取该点的像素的RGB的颜色。
                    Color color = bmp.GetPixel(i, j);
                    //利用公式计算灰度值。
                    int gray = (int)(color.R * 0.3 + color.G * 0.59 + color.B * 0.11);
                    //菜单不可用时,还要将图片的透明度加倍。
                     Color newColor = Color.FromArgb((int)(color.A * .5), gray, gray, gray);
                    //Color newColor = Color.FromArgb(color.A,gray, gray, gray);
                    bmp.SetPixel(i, j, newColor);
                }
            }
            return bmp;
        }
------解决方案--------------------
改写成VB的话,大概是这样
public function ToGray(Bitmap bmp) as Bitmap 
    dim i as integer
    dim n as integer
    for(i=0 to bmp.Width)
        for(i=0 to bmp.height)
            dim color as Color
            color = bmp.GetPixel(i, j)
            dim gray as integer
            gray = color.R * 0.3 + color.G * 0.59 + color.B * 0.11
            dim newColor as Color
            newColor = Color.FromArgb((int)(color.A * .5), gray, gray, gray)
            bmp.SetPixel(i, j, newColor)
        next
    next
end function
------解决方案--------------------
public function ToGray(Bitmap bmp) as Bitmap 
     dim i as integer
     dim j as integer
     dim w as integer
     dim h as integer
     w= bmp.Width
     h= bmp.height
     for(i=0 to w)
         for(j=0 h)
             dim color as Color
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: