读书人

小弟我现在有一个dib类(.h 和.cpp)

发布时间: 2013-10-30 12:56:21 作者: rapoo

我现在有一个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]是一样的,就是相邻像素用矩阵相邻的值来比较。这样来抖动二值化。二值化的结果是有抖动效果的。

读书人网 >VC/MFC

热点推荐