首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

小弟我现在有一个dib类,(.h 和.cpp)都有请教如何在VS2010单文档下显示DIB位图

2013-10-30 
我现在有一个dib类,(.h 和.cpp)都有请问怎么在VS2010单文档下显示DIB位图?1、我需要具体的步骤,包括在哪个

我现在有一个dib类,(.h 和.cpp)都有请问怎么在VS2010单文档下显示DIB位图?
1、我需要具体的步骤,包括在哪个类中添加响应函数等;
2、解释为什么要这样,显示的流程是什么?
3、DIB类构造如果不一样,那可以指明需要什么功能及函数、变量的DIB类;
4、大神请耐心解答,我是小白,谢谢啦! VS2010 位图 单文档显示
[解决办法]
for (j = 0; j < lHeight ; j++)//扫描每图像行
{
for(i = 0; i < lLineBytes ; i++)//扫描每行的每个字节
{
// 指向源图像倒数第j行,第i个象素的指针 
lpSrc = (unsigned char *)lpDIBBits + lLineBytes * j + i;
//转换为字节的位图数据指针加偏移量指向处理字节

nPixelValue = (*lpSrc);//nPixelValue 应该是字节类型,怎么是int?这个我就不懂了

nPixelValue =nPixelValue;

// 右移两位后做比较
if ( (nPixelValue>>2) > BayerPattern[j&7][i&7]) 
//2值化方式,每点值除于4之后,和矩阵数据对应数据比较,矩阵取值为扫描行列数据取低4位(因为你的矩阵是4X4)
                //打白点    
*(lpSrc)=(unsigned char)255; 

else 
//打黑点
*(lpSrc)=(unsigned char)0; 
}
}

pDoc->UpdateAllViews(NULL); 
}

[解决办法]
要知道抖动矩阵二值化的原理,原理就是抖动。矩阵的值是0到63抖动排列的。
if ( (nPixelValue>>2) > BayerPattern[j&7][i&7]) 
nPixelValue的范围是0到255 移动两位后是0到63, BayerPattern[j&7][i&7]和[j%7][i%7]是一样的,就是相邻像素用矩阵相邻的值来比较。这样来抖动二值化。二值化的结果是有抖动效果的。

热点排行