一步一个脚印,走在自己前面!

想想自己5年后会是什么样子……
posts - 34, comments - 25, trackbacks - 0, articles - 6
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
Author: Zero Lee (from Zero Studio)
Abstract: This text is going to discuss functions of Class CImage in ATL.

   关于GetBits()函数的使用.对于一幅DIB图像来说,图像的左下角为像素数据的起点。通常我们会认为GetBits()函数返回的是图像左下角的数据指针,但是CImage实现却不是这样。GetBits()返回的是图像左上角的像素数据指针。从这个角度上来讲,它的功能等效于函数GetPixelAddress(0,0)调用。而且CImage的成员函数中坐标是以左上角为坐标原点来表示的。

   关于SetPixelIndexed()函数的使用. 从函数名我们可以得知,该函数应该应用于非真彩色图像,特别是8位的图像。在测试该函数时,发现应用于8位BMP图像时,不管设置什么索引值,操作后的结果显示索引值变成了0。这个现象确实让人匪夷所思。不知道是不是CImage类的该函数设计有问题。当然,如果将它不合理地应用于真彩色图像,操作的结果还是黑色。

   另外,CImage类中还有一些函数,譬如SetPixel()和SetPixelRGB()函数,理论上应该将它们应用于真彩色图像,但是如果强硬的将它们应用于非真彩色图像(测试中将它们应用于8位BMP图像),操作结果显示设置的值都会被“合理”的变成灰阶数据,比如说,如果我们设置RGB值为(180,0,0),操作结果为调色板里的数据变为RGB(60,60,60).

Feedback

# re: Problems about two functions of CImage in ATL  回复  更多评论   

2007-04-21 13:53 by mm
SetPixelIndexed()我也遇到同样的问题,奇怪啊


标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
.NET频道  博客园社区  闪存
网站导航: