从Windows3.0开始,出现了Windows Palette Manager的概念。对于每一个使用调色板(palette)的设备,系统均为其维护一个系统调色板(system palette)。除了察看系统调色板的内容之外,应用不能直接访问系统调色板。系统对系统调色板拥有完全的控制权,只允许通过逻辑调色板的方式来使用调色板。应用程序可以用GetSystemPaletteEntries函数来查看系统调色板的内容,该函数检索到一个或多个entries,其数目以GetDeviceCaps()所取得的值为限(使用SIZEPALETTE来调用)。如果要把用户自己想要的色彩写进去,可以通过对调色板的使用来达到目的。您可以参看下面的代码(以64色为例):声明:         LOGPALETTE    * plp ;                HPALETTE hPalette ;创建:         plp = malloc (sizeof (LOGPALETTE) + 64 * sizeof (PALETTEENTRY)) ;          plp->palVersion    = 0x0300 ;          plp->palNumEntries = 65 ;          for (i = 0 ; i < 65 ; i++)
          {
               plp->palPalEntry[i].peRed   = (BYTE) min (255, 4 * i) ;
               plp->palPalEntry[i].peGreen = (BYTE) min (255, 4 * i) ;
               plp->palPalEntry[i].peBlue  = (BYTE) min (255, 4 * i) ;               plp->palPalEntry[i].peFlags = 0 ;          }          hPalette = CreatePalette (plp) ;          free (plp) ;使用:    SelectPalette (hdc, hPalette, FALSE) ;          RealizePalette (hdc) ;
 销毁:         DeleteObject (hPalette) ;
 这样,就建成了用户自定义的逻辑调色板,使用hdc来显示图像,就是自己想要的色彩了。
 如果需要进一步的信息,您可以参看:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/colors_3t5x.asp或者http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/colors_4x5x.asp
 - 微软全球技术中心 VC技术支持本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。