CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

用VB如何把24位颜色BMP文件转成8位颜色!

楼主xjgcyq(xjg)2006-03-01 21:39:24 在 VB / 基础类 提问

用VB如何把24位颜色BMP文件转成8位颜色! 问题点数:30、回复次数:2Top

1 楼daisy8675(莫依 沉迷)回复于 2006-03-01 23:52:02 得分 0

试一下,我也不知道是否满足要求:)  
  Option   Explicit  
   
  Private   Declare   Function   GetPixel   Lib   "gdi32"   _  
            (ByVal   hdc   As   Long,   ByVal   x   As   Long,   ByVal   Y   As   Long)   As   Long  
  Private   Declare   Function   SetPixelV   Lib   "gdi32"   _  
            (ByVal   hdc   As   Long,   ByVal   x   As   Long,   _  
              ByVal   Y   As   Long,   ByVal   crColor   As   Long)   As   Long  
  Private   tmpPic   As   Picture  
   
  Private   Sub   Form_Load()  
          Picture1.ScaleMode   =   3  
          Picture1.AutoRedraw   =   True  
          Picture1.Picture   =   LoadPicture(App.Path   &   "\55.bmp")  
          Set   tmpPic   =   Picture1.Picture  
  End   Sub  
   
  Private   Sub   Command1_click()  
          Dim   width5     As   Long,   heigh5   As   Long,   rgb5   As   Long  
          Dim   hdc5   As   Long,   i   As   Long,   j   As   Long  
          Dim   bBlue   As   Long,   bRed   As   Long,   bGreen   As   Long  
          Dim   Y   As   Long  
           
          width5   =   Picture1.ScaleWidth  
          heigh5   =   Picture1.ScaleHeight  
          hdc5   =   Picture1.hdc  
          For   i   =   1   To   width5  
                  For   j   =   1   To   heigh5  
                          rgb5   =   GetPixel(hdc5,   i,   j)  
                          bBlue   =   Blue(rgb5)             '获得兰色值  
                          bRed   =   Red(rgb5)                 '获得红色值  
                          bGreen   =   Green(rgb5)         '获得绿色值  
                          '将三原色转换为灰度  
                          Y   =   (9798   *   bRed   +   19235   *   bGreen   +   3735   *   bBlue)   \   32768  
                          '将灰度转换为RGB  
                          rgb5   =   RGB(Y,   Y,   Y)  
                          SetPixelV   hdc5,   i,   j,   rgb5  
                  Next   j  
          Next   i  
          Set   Picture1.Picture   =   Picture1.Image  
  End   Sub  
   
  Private   Function   Red(ByVal   mlColor   As   Long)   As   Long  
          '从RGB值中获得红色值  
          Red   =   mlColor   And   &HFF  
  End   Function  
  Private   Function   Green(ByVal   mlColor   As   Long)   As   Long  
          '从RGB值中获得绿色值  
          Green   =   (mlColor   \   &H100)   And   &HFF  
  End   Function  
  Private   Function   Blue(ByVal   mlColor   As   Long)   As   Long  
          ''从RGB值中获得蓝色值  
          Blue   =   (mlColor   \   &H10000)   And   &HFF  
  End   Function  
  Top

2 楼rainstormmaster(暴风雨 v2.0)回复于 2006-03-02 08:21:24 得分 0

看http://topic.csdn.net/t/20030317/00/1538596.html里我的回复Top

相关问题

  • 用VB如何把24位颜色BMP文件转成8位颜色!
  • 如何将jpg文件转成bmp文件?
  • 如何将32*32的bmp图片转成ico文件?
  • 如何用vb编写将word文件转成txt或html文件的程序?
  • 100分求问如何将BMP文件转成JPEG(在线等高手解决)
  • 我要一个能把JPEG文件转成BMP文件的C或C++源代码。
  • --请问如何将一个BMP图形文件转成JPG图形文件,高分请教师---
  • 怎么转成文件夹?
  • 把TXT文件转成EXCEL文件
  • 怎么将delphi支持的jpg,jpeg,ico,emf,wmf格式文件转成bmp格式

关键词

  • picture1
  • 颜色
  • heigh
  • hdc
  • bmp
  • byval
  • as long
  • rgb
  • dim
  • width

得分解答快速导航

  • 帖主:xjgcyq

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo