switch(Bm.bmBitsPixel)
{
case 1:
{
for( WY = 0; WY < abs(Bm.bmHeight); WY++ )
{
if( bmap.dsBm.bmHeight < 0 ) PY = WY;
else PY = abs(bmap.dsBm.bmHeight) - 1 - WY;
for( WX = 0; WX < Bm.bmWidth; WX++ )
{
cou = (LineWidth * 8 * PY + WX) / 8;//LineWidth位图每行字节数
csColor = (int)( bitma[counter] >> ( 7 - (WX % 8)) ) % 2;
csColor = aaa[csColor]; //aaa是个数组
cou = WY * Bm.bmWidth + WX;
if( csColor != 1 ) BinaryImage[cou] = 0;
else BinaryImage[cou] = 1;
}
}
}
请问这段代码是什么意思呀?请各位大侠指点
{
case 1:
{
for( WY = 0; WY < abs(Bm.bmHeight); WY++ )
{
if( bmap.dsBm.bmHeight < 0 ) PY = WY;
else PY = abs(bmap.dsBm.bmHeight) - 1 - WY;
for( WX = 0; WX < Bm.bmWidth; WX++ )
{
cou = (LineWidth * 8 * PY + WX) / 8;//LineWidth位图每行字节数
csColor = (int)( bitma[counter] >> ( 7 - (WX % 8)) ) % 2;
csColor = aaa[csColor]; //aaa是个数组
cou = WY * Bm.bmWidth + WX;
if( csColor != 1 ) BinaryImage[cou] = 0;
else BinaryImage[cou] = 1;
}
}
}
请问这段代码是什么意思呀?请各位大侠指点
解决方案 »
- VC++ 网络编程的问题
- 举报 AvalonXP 发恶意回帖
- 在vckbase上下个个My First WTL window 的例子里面只有一个类还有资源……
- Release下我的应用程序框架不响应DLL(同为Release版)发送的自定义消息,是怎么回事啊,Debug下没问题,急啊(在google百度都没找到答案)!急盼各高手支招。。。
- 关于可编辑的列表控件
- [HELP]关于BMP图象的切割绘制问题,请有经验的网友帮忙
- 怎么构造COleSafeArray
- 关于DVD播放的问题--希望大家发表高见
- 请问一个简单问题:怎样在一行文本的结尾处添加一个换行符?
- mfc读取word文件内容,包括内容合适,如字体、字号等?
- 如何比较两个时间相差多少秒阿!
- combobox能设置那种没输入前灰化的提示文字吗?
这段代码不全,而且有问题。
第一个 cou = (LineWidth * 8 * PY + WX) / 8; 计算后没利用,算了2次 csColor 后又 cou = WY * Bm.bmWidth + WX; 是不是 bitma?[counter] 的counter 就是这个cou?大框架是酱紫滴:
由于图像数据我们通常访问的时候是按2维数组访问,就是按x方向和y方向循环(这里是先y后x)
for( WY = 0; WY < Bm.bmHeight; WY++ )
{
for( WX = 0; WX < Bm.bmWidth; WX++ )
{
... ...
}
}
但是图像数据在内存中是1维线性排列的,所以用公式WY * Bm.bmWidth + WX 转换x,y值为1维数组坐标cou,通过这2层循环遍历图像中的每个像素的值BinaryImage[cou]。从switch(Bm.bmBitsPixel)
case 1:
可知这段代码是向一个单色位图填充0和1数据,就是BinaryImage[cou] = csColor;(原代码if( csColor != 1 )...)貌似多余了。bitma[counter]意义不明,csColor = (int)( bitma[counter] >> ( 7 - (WX % 8)) ) % 2 感觉是根据bitma[counter]值的奇偶填色,最好说明这段程序的用处是什么。
cou = (LineWidth * 8 * PY + WX) / 8;
csColor = (int)( bitma[counter] >> ( 7 - (WX % 8)) ) % 2;
为什么要这么写呢?请知道的高手帮帮忙
那上段代码中这句话是什么意思呢?
我说过bitma[counter]的意义不明,你要结合其他代码看看。
如果bitma[counter]的值是1个字节的话,(int)( bitma[counter] >> ( 7 - (WX % 8)) ) % 2 就是从左到右依次读出bitma[counter]每一位的值,为1则BinaryImage[cou]当前位置就为1,为0则BinaryImage[cou]就为0。是不是很罗嗦?所以我也怀疑这句代码到底是做什么的。
如果你手上的这段程序能运行,就看看运行后实现的是什么结果吧,这样更直观一些