**************************************************************************
佛说:不能度己怎能度人.........度人亦度己。
佛说:大肚能容,容天下难容之事;慈颜常笑,笑世间可笑之人。
世间有一说:布袋和尚是生活在浙江杭州一带的一个和尚,后来升级成了弥乐佛 :)
出道不久,问题多多......................
望大虾们能指点迷津,发扬我佛慈悲、普度众生之大无畏精神,助我辈早日脱离苦海.
***************************************************************************学佛多日,今才知道什么是佛法无边啊.............既来之则安之,回头无岸.....1.   问题:“元文件通常用于通过键盘交换绘图信息”,这句话怎么理解?
2.   问题:“一个16位、24位或32位每像素的位图则不存在什么色彩表“,此话怎么解释?
3.   BYTE *pBitmapBlock=NULL;
     pBitmapBlock=reinterpret_cast<BYTE *>(LockResource(hGlob));
     问题:其中reinterpret_cast<BYTE *>(LockResource(hGlob))怎么解释?

解决方案 »

  1.   

    元文件里面记载的不是哪个点到底是什么颜色,
    而是记载的诸如
    1\移到0,0
    2\画一条线到0,0
    3\把背景设成黄色
    这样的一个个绘图命令组成的图像格式.第二句话并不正确因为即使是有的16位,24位32位的图像还是会存在颜色表虽然他们不一定需要,
    因为24位的他每个里面已经包含了RGB了而32位的里面也包含了一个RGBA了.虽然这样,但有时为了能生成256色,所以偶尔也会有这个颜色表lockresource我的看法是为了多线程的需要,防止其他进程对这个HANDLE所指的对像进行修改,
    而单线程可能就不用这句话了,我想.
      

  2.   

    sevencat(七猫)施主:
    1.你说的“因为24位的他每个里面已经包含了RGB了而32位的里面也包含了一个RGBA了”是如何包含的,能不能详细解释一下?
    2.“虽然这样,但有时为了能生成256色,所以偶尔也会有这个颜色表”是不是说当要生成256色的图象时,由于色彩信息太大而必须用色彩表呢?
    3.   BYTE *pBitmapBlock=NULL;
         pBitmapBlock=reinterpret_cast<BYTE *>(LockResource(hGlob));
         问题:其中reinterpret_cast<BYTE *>(LockResource(hGlob))怎么解释?
              我主要是想问reinterpret_cast<BYTE *>这部分的意思。
      

  3.   

    1、”元文件通常用于通过键盘交换绘图信息“,这句话可能是翻译错了
    2、颜色是用三个8位R、G、B值来表示的,所以,256色的位图需要颜色表,因为,256色位图中每个颜色值实际是一个指向颜色表的索引值。
    3、reinterpret_cast<BYTE *>用于将 LPVOID 类型转为 BYTE*.
      

  4.   

    SoLike()施主:你解答的甚好,贫僧受益非浅,不过对第2个问题还有疑问:
    为什么8、16、32位的自己就可以包含了所有色彩信息呢?怎么包含的?
      

  5.   

    描述书色彩的标准有很多,这跟行业有关,如印刷的CYMK等
    在Windows系统用的比较多的位图分别使用三个8位的R、G、B值来表示颜色,合起来是32位。所以32位被称为真彩色,
    24位被称为伪彩色(它似乎是用了8、8、6位的RGB,因为人眼对蓝不敏感)。
    至于8位,即256色,它只是颜色表的索引,于是你必须对位图的调色板进行优化才能让256色的位图有较好的显示效果,比如你的256位图中绿色比较多,这样你在调色板里多设一些绿色,会逼真一些。但现在显存普遍都很大,256色位图已经很少了,调色板编程是我见过最烦的一项工作
      

  6.   

    SoLike()施主:三个8位的R、G、B值=3*8=24!=32啊,怎么3个8会变成了32呢?不解,望解释