求助高手,BitBlt/DC/系统颜色 之间关系

liguiman 2009-08-27 02:58:36
问题如下:

假如有三个数组
unsigned char aa[10000]={1,2,3,4};
unsigned char bb[10000]={1,2,3,4};
unsigned char cc[10000]={0};
想进行如下操作,把aa、bb的数据当成24位bmp的纯数据读入,然后对他们使用BitBlt操作,将产生的结果纯数据输出到cc。

说明:

这里目的不是要比较图像,而是要在其它芯片系统上实现bitblt这个函数(其中的SRCAND等),想验证那个算法正确性,如果直接对图像数据进行与或等操作显得没有说服力,所以想通过bitblt得到数据结果做验证。

1 我输入的2个原始原始数据颜色深度相同但一般和系统不同(可能同时为8位/16位/32位),所以不能变成系统相关的。
2 就是说bitblt的使用环境一定要有DC才能使用对吧?(就是先创建DC,然后选入bitmap),而DC这个条件又一定要是系统相关?
3 输出结果一定要和原始数据保持一致的颜色位(8位/16位/32位)
4 我怕的是输入两个为8位色图,bitblt操作之后,输出结果变成系统的了(32位色),用GetDIBits得到DC里面的数据吗?我需要仅是结果数据,所以有什么办法可以直接从bitblt结果中取出来吗?
5 如果真的是这样,(bitblt)结果就是系统的颜色位,那么如何转变成最初的颜色位?有直接的函数可以用吗?还是需要自己写一部分代码?
6 就算转换成最初颜色位,是不是这个时候已经变换过了(8位图输入--〉比较的时候32位--〉结果32位--〉输出8位),这样操作会进行颜色的变换,所以结果不一定是bitblt的与/或等直接操作的一直吧。

非常感谢
...全文
128 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
雪影 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liguiman 的回复:]
当然写过,也查了很多资料,可是没有系统的看书。

非常感谢各位,我的问题都被lambocha回答的很清楚了,可惜是在站内短信里面。

[/Quote]
那贴出来大家也学习学习
liguiman 2009-08-27
  • 打赏
  • 举报
回复
当然写过,也查了很多资料,可是没有系统的看书。

非常感谢各位,我的问题都被lambocha回答的很清楚了,可惜是在站内短信里面。
dirdirdir3 2009-08-27
  • 打赏
  • 举报
回复
cdc是一定要的,dc是设备相关的,和系统没有关系...............
也就是你的dc设置的是8位的,得到结果就是8位...........

而且bitblt只需要2个数组吧,一个是目的地一个是源...............
雪影 2009-08-27
  • 打赏
  • 举报
回复
把你写的代码贴出来,研究研究
fandh 2009-08-27
  • 打赏
  • 举报
回复
不知道!楼主自己试吧!
雪影 2009-08-27
  • 打赏
  • 举报
回复
楼主为这样的问题发了不少的贴子吧

你自己写过代码测试吗?
岁月小龙 2009-08-27
  • 打赏
  • 举报
回复
太深奥了,不懂

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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