⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 浮雕技术.txt

📁 19Kinds_image_arithmath 19种图像基本算法
💻 TXT
字号:
void CDibView::OnFDImage() //产生"浮雕"效果图函数
{
	HANDLE data1handle;
	LPBITMAPINFOHEADER lpBi;
	CDibDoc *pDoc=GetDocument();
	HDIB hdib;
	unsigned char *hData;
	unsigned char *data;
	hdib=pDoc->GetHDIB();
	BeginWaitCursor();
	lpBi=(LPBITMAPINFOHEADER)GlobalLock((HGLOBAL)hdib);
	hData=(unsigned char*)FindDIBBits((LPSTR)lpBi);
	pDoc->SetModifiedFlag(TRUE);
	data1handle=GlobalAlloc(GMEM_SHARE,WIDTHBYTES(lpBi->biWidth*8)*lpBi->biHeight);
	//声明一个缓冲区用来暂存处理后的图像数据
	data=(unsigned char*)GlobalLock((HGLOBAL)data1handle);
	AfxGetApp()->BeginWaitCursor();
	int i,j,buf;
	for( i=lpBi->biHeight; i>=2; i--)
		for( j=lpBi->biWidth; j>=2; j--)
		{
			//"浮雕"处理 
			buf=*(hData+(lpBi->biHeight-i)*WIDTHBYTES(lpBi->biWidth*8)+j)-*(hData+(lpBi->biHeight-i+1)*WIDTHBYTES(lpBi->biWidth*8)+j-1)+128;
			if(buf>255) buf=255;
			if(buf<0)buf=0;
			*(data+(lpBi->biHeight-i)*WIDTHBYTES(lpBi->biWidth*8)+j)=(BYTE)buf;
		}
		
		for( j=0; jbiHeight; j++)
			for( i=0; ibiWidth; i++)
				//重新写回原始图像的数据缓冲区
				*(hData+i*WIDTHBYTES(lpBi->biWidth*8)+j)=*(data+i*WIDTHBYTES(lpBi->biWidth*8)+j);
			AfxGetApp()->EndWaitCursor();
			GlobalUnlock((HGLOBAL)hdib);
			GlobalUnlock(data1handle);
			EndWaitCursor();
			Invalidate(TRUE);//显示图像
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -