版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 8种常用图像处理算法(函数) 这是我毕业设计的一部分代码/* * * 函数名称: * * VertMirror() * * 参数: * * LPSTR lpDIB /指向源DIB图像指针 * * 返回值: * * BOOL /镜像成功返回TRUE,否则返回FALSE。 * * 说明: * * 该函数用来实现DIB图像的垂直镜像。 * */BOOL WINAPI VertMirror(LPSTR lpDIB)/原图象宽度 LONG lWidth;/原图象高度LONG lHeight;/原图象的颜色数WORD wNumColors;/原图象的信息头结构指针LPBITMAPINFOHEADER l
2、pbmi;/指向原图象和目的图象的像素的指针LPBYTE lpSrc,lpDst;/平移后剩余图像在源图像中的位置(矩形区域)CRectrectSrc;/指向原图像像素的指针LPBYTE lpDIBBits;/指向复制图像像素的指针LPBYTE lpNewDIBBits;/内存句柄HLOCALh;/循环变量LONGi;/图像每行的字节数LONG lLineBytes;/获取图象的信息头结构的指针lpbmi=(LPBITMAPINFOHEADER)lpDIB;/找到图象的像素位置lpDIBBits=(LPBYTE):FindDIBBits(lpDIB);/获取图象的宽度lWidth=:DIBWi
3、dth(lpDIB);/获取图象的高度lHeight=:DIBHeight(lpDIB);/获取图象的颜色数wNumColors=:DIBNumColors(lpDIB);/计算图像每行的字节数lLineBytes = WIDTHBYTES(lWidth *(lpbmi->biBitCount);/ 暂时分配内存,以保存新图像h= LocalAlloc(LHND, lLineBytes);/ 分配内存失败,直接返回if (!h)return FALSE;/ 锁定内存lpNewDIBBits = (LPBYTE)LocalLock(h);/如果是256色位图或真彩色位图if(wNumCol
4、ors=256|wNumColors=0) /平移图像,每次移动一行 for(i = 0; i<lHeight/2; i+) /指向原图象倒数第i行像素起点的指针 lpSrc =(LPBYTE)lpDIBBits + lLineBytes * i; /目标区域同样要注意上下倒置的问题 lpDst =(LPBYTE)lpDIBBits+lLineBytes * (lHeight-i-1) ; /备份一行 memcpy(lpNewDIBBits, lpDst, lLineBytes); /将倒数第i行像素复制到第i行 memcpy(lpDst, lpSrc, lLineBytes); /将第
5、i行像素复制到第i行 memcpy(lpSrc, lpNewDIBBits, lLineBytes); elseAfxMessageBox("只支持256色和真彩色位图");/ 释放内存 LocalUnlock(h); LocalFree(h);return false;/ 释放内存LocalUnlock(h);LocalFree(h);/ 返回return TRUE;/* * * 函数名称: * * RotateDIB () * * 参数: * * LPSTR lpDIB /指向源DIB图像指针 * * int iAngle * 说明: * * 该函数用来实现DIB图像的
6、旋转。 * */HGLOBAL WINAPI RotateDIB(LPSTR lpDIB,int iAngle)/原图象宽度 LONG lWidth;/原图象高度LONG lHeight;/旋转后图象宽度 LONG lNewWidth;/旋转后图象高度LONG lNewHeight;/原图象的颜色数WORD wNumColors;/原图象的信息头结构指针LPBITMAPINFOHEADER lpbmi,lpbmi0;/指向原图象和目的图象的像素的指针LPBYTE lpSrc,lpDst;/指向原图像像素的指针LPBYTE lpDIBBits;/指向旋转后图像(像素)的指针LPBYTE lpNe
7、wDIBBits;LPSTR lpNewDIB;/旋转后新的DIB句柄HDIBhDIB;/循环变量LONGi,j,i0,j0;/原图像每行的字节数LONG lLineBytes;/旋转后图像每行的字节数LONG lNewLineBytes;/旋转角度的弧度double fArcAngle;/旋转角度的正弦和余弦float fSin,fCos;/旋转前图象四个角的坐标(以图象中心为坐标系原点)float fSrcX1,fSrcY1,fSrcX2,fSrcY2;float fSrcX3,fSrcY3,fSrcX4,fSrcY4;/旋转后图象四个角的坐标(以图象中心为坐标系原点) float fDs
8、tX1,fDstY1,fDstX2,fDstY2;float fDstX3,fDstY3,fDstX4,fDstY4;/两个中间量float f1,f2;/找到图象的像素位置lpDIBBits=(LPBYTE):FindDIBBits(lpDIB);/获取图象的宽度lWidth=:DIBWidth(lpDIB);/获取图象的高度lHeight=:DIBHeight(lpDIB);/获取图象的颜色数wNumColors=:DIBNumColors(lpDIB);/获取指向原位图信息头结构的指针lpbmi0=(LPBITMAPINFOHEADER)lpDIB;/计算原图像每行的字节数lLineBy
9、tes = WIDTHBYTES(lWidth *(lpbmi0->biBitCount);/将旋转角度从度转换到弧度fArcAngle =(iAngle*PI)/180.0;/计算旋转角度的正弦fSin = (float) sin(fArcAngle);/计算旋转角度的余弦fCos = (float) cos(fArcAngle);/计算原图的四个角的坐标(以图像中心为坐标系原点)fSrcX1 = (float) (- (lWidth - 1) / 2);fSrcY1 = (float) ( (lHeight - 1) / 2);fSrcX2 = (float) ( (lWidth -
10、 1) / 2);fSrcY2 = (float) ( (lHeight - 1) / 2);fSrcX3 = (float) (- (lWidth - 1) / 2);fSrcY3 = (float) (- (lHeight - 1) / 2);fSrcX4 = (float) ( (lWidth - 1) / 2);fSrcY4 = (float) (- (lHeight - 1) / 2);/计算新图四个角的坐标(以图像中心为坐标系原点)fDstX1 = fCos * fSrcX1 + fSin * fSrcY1;fDstY1 = -fSin * fSrcX1 + fCos * fSrc
11、Y1;fDstX2 = fCos * fSrcX2 + fSin * fSrcY2;fDstY2 = -fSin * fSrcX2 + fCos * fSrcY2;fDstX3 = fCos * fSrcX3 + fSin * fSrcY3;fDstY3 = -fSin * fSrcX3 + fCos * fSrcY3;fDstX4 = fCos * fSrcX4 + fSin * fSrcY4;fDstY4 = -fSin * fSrcX4 + fCos * fSrcY4;/计算旋转后的图像实际宽度lNewWidth = (LONG) ( max( fabs(fDstX4 - fDstX1)
12、, fabs(fDstX3 - fDstX2) ) + 0.5);/计算旋转后的图像高度lNewHeight = (LONG) ( max( fabs(fDstY4 - fDstY1), fabs(fDstY3 - fDstY2) ) + 0.5);/计算旋转后图像每行的字节数lNewLineBytes = WIDTHBYTES(lNewWidth * lpbmi0->biBitCount);/计算两个常数f1 = (float) (-0.5 * (lNewWidth - 1) * fCos - 0.5 * (lNewHeight - 1) * fSin+ 0.5 * (lWidth -
13、 1);f2 = (float) ( 0.5 * (lNewWidth - 1) * fSin - 0.5 * (lNewHeight - 1) * fCos+ 0.5 * (lHeight - 1);/暂时分配内存,以保存新图像hDIB=(HDIB):GlobalAlloc(GHND, lNewHeight*lNewLineBytes+*(LPDWORD)lpDIB+:PaletteSize(lpDIB);/分配内存失败,直接返回if (!hDIB)return NULL;/锁定内存lpNewDIB = (LPSTR):GlobalLock(HGLOBAL)hDIB);/复制DIB信息头和调
14、色板memcpy(lpNewDIB,lpDIB,*(LPDWORD)lpDIB+:PaletteSize(lpDIB);/获取图象的信息头结构的指针lpbmi=(LPBITMAPINFOHEADER)lpNewDIB;/更新DIB图象的高度和宽度lpbmi->biWidth=lNewWidth;lpbmi->biHeight=lNewHeight;/找到新DIB像素的起始位置lpNewDIBBits=(LPBYTE):FindDIBBits(lpNewDIB);/如果是256色位图if(wNumColors=256) /旋转后图像每行 for(i = 0; i<lNewHei
15、ght; i+) /旋转后图象每列 for(j=0;j<lNewWidth;j+) /指向图象第i行第j个像素的指针 lpDst =(LPBYTE)lpNewDIBBits + lNewLineBytes * (lNewHeight-1-i)+j; /计算每个像素点在原图象中的坐标 i0 = (LONG) (-(float) j) * fSin + (float) i) * fCos + f2 + 0.5); j0 = (LONG) ( (float) j) * fCos + (float) i) * fSin + f1 + 0.5); / 判断是否在源图象范围之内 if( (j0 &g
16、t;= 0) && (j0 < lWidth) && (i0 >= 0) && (i0 < lHeight) / 指向源DIB图象第i0行,第j0个象素的指针 lpSrc = (LPBYTE)lpDIBBits + lLineBytes * (lHeight - 1 - i0) + j0; / 复制象素 *lpDst = *lpSrc; else / 对于源图中没有的象素,直接赋值为255 * (LPBYTE)lpDst) = 255; /如果是24位真彩色位图else if(wNumColors=0) /旋转后图像每行 for
17、(i = 0; i<lNewHeight; i+) /旋转后图象每列 for(j=0;j<lNewWidth;j+) /指向图象第i行第j个像素的指针 lpDst =(LPBYTE)lpNewDIBBits + lNewLineBytes * (lNewHeight-1-i)+3*j; /计算每个像素点在原图象中的坐标 i0 = (LONG) (-(float) j) * fSin + (float) i) * fCos + f2 + 0.5); j0 = (LONG) ( (float) j) * fCos + (float) i) * fSin + f1 + 0.5); / 判
18、断是否在源图象范围之内 if( (j0 >= 0) && (j0 < lWidth) && (i0 >= 0) && (i0 < lHeight) / 指向源DIB图象第i0行,第j0个象素的指针 lpSrc = (LPBYTE)lpDIBBits + lLineBytes * (lHeight - 1 - i0) + 3*j0; / 复制象素 memcpy(lpDst,lpSrc,3); else / 对于源图中没有的象素,直接赋值为255 memset(lpDst,255,3); elseAfxMessageBox(&
19、quot;只支持256色和真彩色位图");/ 释放内存 GlobalUnlock(hDIB); GlobalFree(hDIB); return NULL; / 返回return hDIB; /* * * 函数名称: * ZoomDIB() * * 参数: * LPSTR lpDIB- 指向源DIB的指针 * float fXZoomRatio- X轴方向缩放比率 * float fYZoomRatio- Y轴方向缩放比率 * * 返回值: * HGLOBAL - 缩放成功返回新DIB句柄,否则返回NULL。 * * 说明: * 该函数用来缩放DIB图像,返回新生成DIB的句柄。 *
20、 */HGLOBAL WINAPI ZoomDIB(LPSTR lpDIB, float fXZoomRatio, float fYZoomRatio)/ 源图像的宽度和高度LONGlWidth;LONGlHeight;/ 缩放后图像的宽度和高度LONGlNewWidth;LONGlNewHeight;WORD wNumColors;/ 缩放后图像的宽度(lNewWidth',必须是4的倍数)LONGlNewLineBytes;/ 指向源图像的指针LPBYTElpDIBBits;/ 指向源象素的指针LPBYTElpSrc;/ 缩放后新DIB句柄HDIBhDIB;/ 指向缩放图像对应象素
21、的指针LPBYTElpDst;/ 指向缩放图像的指针LPSTRlpNewDIB;LPBYTElpNewDIBBits;/ 指向BITMAPINFO结构的指针(Win3.0)LPBITMAPINFOHEADER lpbmi,lpbmi0;/ 指向BITMAPCOREINFO结构的指针LPBITMAPCOREHEADER lpbmc;/ 循环变量(象素在新DIB中的坐标)LONGi;LONGj;/ 象素在源DIB中的坐标LONGi0;LONGj0;/ 图像每行的字节数LONG lLineBytes;/ 找到源DIB图像象素起始位置lpDIBBits = (LPBYTE):FindDIBBits(l
22、pDIB);/ 获取图像的宽度lWidth = :DIBWidth(lpDIB);/ 获取图像的高度lHeight = :DIBHeight(lpDIB);wNumColors= :DIBNumColors(lpDIB); lpbmi0=(LPBITMAPINFOHEADER)lpDIB;/ 计算图像每行的字节数lLineBytes = WIDTHBYTES(lWidth * (lpbmi0->biBitCount);/ 计算缩放后的图像实际宽度/ 此处直接加0.5是由于强制类型转换时不四舍五入,而是直接截去小数部分lNewWidth = (LONG) (lWidth* fXZoomRa
23、tio + 0.5);/ 计算新图像每行的字节数lNewLineBytes = WIDTHBYTES(lNewWidth * (lpbmi0->biBitCount);/ 计算缩放后的图像高度lNewHeight = (LONG) (lHeight * fYZoomRatio + 0.5);/ 分配内存,以保存新DIBhDIB = (HDIB) :GlobalAlloc(GHND, lNewLineBytes * lNewHeight + *(LPDWORD)lpDIB + :PaletteSize(lpDIB);/ 判断是否内存分配失败if (hDIB = NULL)/ 分配内存失败r
24、eturn NULL;/ 锁定内存lpNewDIB = (LPSTR):GlobalLock(HGLOBAL) hDIB);/ 复制DIB信息头和调色板memcpy(lpNewDIB, lpDIB, *(LPDWORD)lpDIB + :PaletteSize(lpDIB);/ 找到新DIB象素起始位置lpNewDIBBits = (LPBYTE):FindDIBBits(lpNewDIB);/ 获取指针lpbmi = (LPBITMAPINFOHEADER)lpNewDIB;lpbmc = (LPBITMAPCOREHEADER)lpNewDIB;/ 更新DIB中图像的高度和宽度if (IS
25、_WIN30_DIB(lpNewDIB)/ 对于Windows 3.0 DIBlpbmi->biWidth = lNewWidth;lpbmi->biHeight = lNewHeight;else/ 对于其它格式的DIBlpbmc->bcWidth = (unsigned short) lNewWidth;lpbmc->bcHeight = (unsigned short) lNewHeight;if(wNumColors=256)/ 针对图像每行进行操作for(i = 0; i < lNewHeight; i+)/ 针对图像每列进行操作for(j = 0; j
26、 < lNewWidth; j+)/ 指向新DIB第i行,第j个象素的指针/ 注意此处宽度和高度是新DIB的宽度和高度lpDst = (LPBYTE)lpNewDIBBits + lNewLineBytes * (lNewHeight - 1 - i) + j;/ 计算该象素在源DIB中的坐标i0 = (LONG) (i / fYZoomRatio + 0.5);j0 = (LONG) (j / fXZoomRatio + 0.5);/ 判断是否在源图范围内if( (j0 >= 0) && (j0 < lWidth) && (i0 >=
27、0) && (i0 < lHeight)/ 指向源DIB第i0行,第j0个象素的指针lpSrc = (LPBYTE)lpDIBBits + lLineBytes * (lHeight - 1 - i0) + j0;/ 复制象素*lpDst = *lpSrc;else/ 对于源图中没有的象素,直接赋值为255* (LPBYTE)lpDst) = 255;else if(wNumColors=0)for(i = 0; i < lNewHeight; i+)/ 针对图像每列进行操作for(j = 0; j < lNewWidth; j+)/ 指向新DIB第i行,第j
28、个象素的指针/ 注意此处宽度和高度是新DIB的宽度和高度lpDst = (LPBYTE)lpNewDIBBits + lNewLineBytes * (lNewHeight - 1 - i) + 3*j;/ 计算该象素在源DIB中的坐标i0 = (LONG) (i / fYZoomRatio + 0.5);j0 = (LONG) (j / fXZoomRatio + 0.5);/ 判断是否在源图范围内if( (j0 >= 0) && (j0 < lWidth) && (i0 >= 0) && (i0 < lHeight)/
29、 指向源DIB第i0行,第j0个象素的指针lpSrc = (LPBYTE)lpDIBBits + lLineBytes * (lHeight - 1 - i0) + 3*j0;/ 复制象素memcpy(lpDst,lpSrc,3);else/ 对于源图中没有的象素,直接赋值为255memset(lpDst,255,3);/ 返回return hDIB;/* * * 函数名称: * On256tograyscale () * * 说明: * 该算法函数用来把256图像转化成灰度图像。 * */void CCimageProcessingView:On256tograyscale() / TODO
30、: Add your command handler code here/ 获取文档指针CCimageProcessingDoc* pDoc = GetDocument();/ 指向DIB的指针LPSTRlpDIB; / 指向DIB象素指针LPSTR lpDIBBits;/ 指向DIB的一个象素的指针BYTE *lpSrc; / 颜色表中的颜色数目WORD wNumColors; / 灰度映射表BYTE bGrayMap256; /调色板索应循环变量 LONG i;/ 图象高度循环变量LONGih;/图象宽度循环变量 LONGiw;/ 图像宽度LONGlWidth;/ 图像高度LONGlHei
31、ght;/ 图像每行的字节数LONGOneLineBytes;/ 指向BITMAPINFO结构的指针(Win3.0)LPBITMAPINFO lpbmi;/ 指向BITMAPCOREINFO结构的指针(OS/2)LPBITMAPCOREINFO lpbmc;/ 表明是否是Win3.0 DIB的标记BOOL bWin30DIB;lpDIB = (LPSTR) :GlobalLock(HGLOBAL) pDoc->GetHDIB();/ 获取指向BITMAPINFO结构的指针(Win3.0)lpbmi = (LPBITMAPINFO)lpDIB;/ 获取指向BITMAPCOREINFO结构的
32、指针(OS/2)lpbmc = (LPBITMAPCOREINFO)lpDIB;/ 锁定DIB/ 获取DIB中颜色表中的颜色数目wNumColors = :DIBNumColors(lpDIB);/ 判断是否是256色位图if (wNumColors != 256)MessageBox("不是256色位图!");/ 解除锁定:GlobalUnlock(HGLOBAL) pDoc->GetHDIB();/ 返回return;/ 更改光标形状BeginWaitCursor();/ 判断是否是WIN3.0的DIBbWin30DIB = IS_WIN30_DIB(lpDIB)
33、;/将原图象的调色板转化为灰度调色板/建立原调色板索引与灰度调色板索引的映射关系for (i = 0; i < 256; i +)if (bWin30DIB)/对原256色调色板的每一表项计算对应的灰度值bGrayMapi = (BYTE)(0.299 * lpbmi->bmiColorsi.rgbRed + 0.587 * lpbmi->bmiColorsi.rgbGreen + 0.114 * lpbmi->bmiColorsi.rgbBlue + 0.5);/ 建立灰度调色板 /红色分量lpbmi->bmiColorsi.rgbRed = i;/ 绿色分量l
34、pbmi->bmiColorsi.rgbGreen = i;/ 蓝色分量lpbmi->bmiColorsi.rgbBlue = i;/ 保留位lpbmi->bmiColorsi.rgbReserved = 0;else/对原256色调色板的每一表项计算对应的灰度值bGrayMapi = (BYTE)(0.299 * lpbmc->bmciColorsi.rgbtRed + 0.587 * lpbmc->bmciColorsi.rgbtGreen + 0.114 * lpbmc->bmciColorsi.rgbtBlue + 0.5); /建立灰度调色板/ 红
35、色分量lpbmc->bmciColorsi.rgbtRed = i;/ 绿色分量lpbmc->bmciColorsi.rgbtGreen = i;/ 蓝色分量lpbmc->bmciColorsi.rgbtBlue = i;/ 找到DIB图像象素起始位置lpDIBBits = :FindDIBBits(lpDIB);/ 获取图像宽度lWidth = :DIBWidth(lpDIB);/ 获取图像高度lHeight = :DIBHeight(lpDIB);/ 计算图像每行的字节数OneLineBytes = WIDTHBYTES(lWidth * 8);/ 更换原256色位图的每
36、个象素的颜色索引/ 每行for(ih = 0; ih < lHeight; ih+)/ 每列for(iw= 0; iw < lWidth; iw+)/ 指向DIB第ih行,第iw列的象素的指针lpSrc = (BYTE*)lpDIBBits + OneLineBytes * (lHeight - 1 - ih) +iw;/对256色位图,其像素值是调色板索引值 /对灰度图,索引值就等于其灰度值 /映射调色板索引*lpSrc = bGrayMap*lpSrc;/ 替换当前调色板为灰度调色板pDoc->GetDocPalette()->SetPaletteEntries(0
37、,256,(LPPALETTEENTRY)lpbmi->bmiColors);/ 设置脏标记pDoc->SetModifiedFlag(TRUE);/ 实现新的调色板OnDoRealize(WPARAM)m_hWnd,0);/ 更新视图pDoc->UpdateAllViews(NULL);/ 解除锁定:GlobalUnlock(HGLOBAL) pDoc->GetHDIB();/ 恢复光标EndWaitCursor();/* * * 函数名称: * * RandomNoise() * * 参数: * * LPSTR lpDIB / 指向源DIB图像指针 * * 返回值:
38、 * * BOOL / 加入随机噪声操作成功返回TRUE,否则返回FALSE。 * * 说明: * * 该函数用来对256色位图和24位真彩色位图进行加入随即噪声操作。 * */BOOL WINAPI RandomNoise (LPSTR lpDIB)/ 图像宽度和高度LONG lWidth,lHeight;/ 指向图像像素的指针LPSTR lpDIBBits;/ 指向源图像的指针LPSTRlpSrc;/循环变量long i;long j;/ 图像每行的字节数LONG lLineBytes;/指向图像信息头结构的指针LPBITMAPINFOHEADER lpbmi;/图像的颜色数WORD wN
39、umColors;/噪声BYTE NoiseValue;/ 计算图像每行的字节数lpbmi=(LPBITMAPINFOHEADER)lpDIB;/计算图像的高度和宽度lWidth=:DIBWidth(lpDIB);lHeight=:DIBHeight(lpDIB);/找到图像像素的起始位置lpDIBBits=:FindDIBBits(lpDIB);/计算图像的颜色数wNumColors=:DIBNumColors(lpDIB);/计算图像每行的字节数lLineBytes = WIDTHBYTES(lWidth * lpbmi->biBitCount);/生成伪随机种子srand(unsi
40、gned)time(NULL);/在图像中加噪/如果是256色位图if(wNumColors=256) for (j = 0;j < lHeight ;j+) for(i = 0;i < lWidth ;i+)/随机的噪声值 NoiseValue=rand()/1024; / 指向源图像倒数第j行,第i个象素的指针 lpSrc = (char *)lpDIBBits + lLineBytes * j + i; /在像素值中加入噪声值 *lpSrc = (BYTE)(BYTE)*(lpSrc)*224/256 + NoiseValue);/如果是24位真彩色位图else if(wNu
41、mColors=0)for (j = 0;j < lHeight ;j+) for(i = 0;i < lWidth ;i+) NoiseValue=rand()/1024; / 指向源图像倒数第j行,第i个象素的指针 lpSrc = (char *)lpDIBBits + lLineBytes * j + 3*i; /在每个像素的RGB分量中加入随机的噪声值 *lpSrc+ = (BYTE)(BYTE)*(lpSrc+)*224/256 + NoiseValue);*lpSrc+ = (BYTE)(BYTE)*(lpSrc+)*224/256 + NoiseValue);*lpS
42、rc+ = (BYTE)(BYTE)*(lpSrc+)*224/256 + NoiseValue);/如果既不是256色位图也不是24 位真彩色位图,直接返回elseAfxMessageBox("只支持256色位图和24位真彩色位图");return false;/ 返回return true;/* * * 函数名称: * * AdjustBrightness () * * 参数: * * LPSTR lpDIB / 指向源DIB图像指针 * * int db * * BOOL /操作成功返回TRUE,否则返回FALSE。 * * 说明: * * 该算法函数用来对256色位
43、图和24位真彩色位图进行亮度调整操作。 * */BOOL WINAPI AdjustBrightness(LPSTR lpDIB, int db)BYTE r, g, b; BITMAPINFO *pbmi; WORD wNumColors; LONG i; LPSTR lpDIBBits; int nDelta; int iWidth, iHeight;if (lpDIB = NULL)return FALSE;pbmi = (BITMAPINFO *)lpDIB;if (! pbmi)return FALSE;wNumColors =:DIBNumColors(lpDIB);if (wNu
44、mColors=256) for (i=0; i<wNumColors; i+) pbmi->bmiColorsi.rgbRed = BOUND(pbmi->bmiColorsi.rgbRed+db, 0, 255);pbmi->bmiColorsi.rgbGreen = BOUND(pbmi->bmiColorsi.rgbGreen+db, 0, 255);pbmi->bmiColorsi.rgbBlue = BOUND(pbmi->bmiColorsi.rgbBlue+db, 0, 255);else if(wNumColors=0)lpDIBBits= :FindDIBBits(lpDIB); nDelta = WIDTHBYTES(pbmi->bmiHeader.biBitCount)*(pbmi->bmiHeader.biWidth) - (pbmi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版四年级上册数学第四单元《三位数乘两位数》测试卷【培优】
- 2024年广告传媒代理合同
- 北师大版一年级下册数学第四单元 有趣的图形 测试卷含完整答案(各地真题)
- 2024年地方政府与木材厂关于租地使用权转让的详细合同
- 2024卫星遥感影像在农业领域的应用合同
- 2024年度害虫控制合同书
- 浙江省9+1高中联盟2024-2025学年高一上学期期中考试地理试题
- 2024带有期权的地块租赁合同
- 2024年度“践行社会主义核心价值观”主题教育活动合同
- 2024地铁施工空闲用地租赁合同
- 2024年企业数据存储与安全服务合同
- 2022年北京市公务员录用考试《行测》真题及答案解析
- 江苏省泰兴市2024-2025学年高三上学期期中考试语文试题(含答案)
- 家长会教学课件
- 律师事务所律师事务所风险管理手册
- 2024年消防宣传月知识竞赛考试题库500题(含答案)
- 2024年典型事故案例警示教育手册15例
- 高一历史(中外历史纲要上册)期中测试卷及答案
- 20K607 防排烟及暖通防火设计审查与安装
- 一氧化碳中毒培训课件
- 教案(餐巾折花)
评论
0/150
提交评论