请大家帮忙。(如果这个帖子不适合在这里发,请帮我转到适合这个帖子的地方)

qcp1952 2011-09-28 08:18:17
我不知道这个问题应不应该在这里发。既然是vc.net的专区我想肯定大家都看过chales petzold的windows程序设计(第五版),都说这本书好,因为它是门槛,它是基础,它用的是c语言表述的,而c++都是从c过度的。废话少说,该书的第五章叫绘图基础,其中有这样一段话,它是“虽然只有一些奇怪的程序中才有必要知道视频适配器板卡上的内存组织形式,但是调用GetDeviceCaps函数总可以帮助你确定这些信息。各个像素的多个色彩位可以在显卡内存中以顺序方式存储,也可以不同的色彩位被存放在内存中的不同平面上。.....”我想问的是这段话中“色彩位”是何意思?因为这段话后面引出了两个函数
iPlanes=GetDeviceCaps(hdc,PLANES)和iBitsPixel=GetDeviceCaps(hdc,BITSPIXEL),我觉得这两个函数与上面这段话有关系。我总是理解不好,我试着分析一下,请大家指教。我觉得分析的大体方向应是让上面这段话与这两个函数协调而不应产生矛盾,是这样的,公式:iColors=1<<(iPlanes*iBitsPixel),当无法确定像素的颜色位数时,每个像素颜色所采用的内存位数不同,那么iBitsPixel=1,因为GetDeviceCaps(hdc,BITSPIXEL)无法求得每个像素颜色位数到底是几位,iPlanes要起作用了,既然像素颜色位数是不确定的,可把具有相同位号的位放在相同的平面上,把不同位号的位放在不同的平面上,但是这样的解释不能用在256色视频适配器,因为它用的是调色板,而通过调色板对应的颜色位是18位或24位,这样用iPlanes=GetDeviceCaps(hdc,PLANES)得出的平面数不是18就是24,最终得出的颜色总数(iColors=1<<(iPlanes*iBitsPixel))将不是256。
...全文
27 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧