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

📄 infohidedoc.cpp

📁 该电话薄使用的是数据库
💻 CPP
📖 第 1 页 / 共 4 页
字号:
{
	// TODO: Add your command handler code here
	BMPTOJPEG2K b2j_pdlg;
	b2j_pdlg.DoModal();
}

void CInfoHideDoc::OnRgbtogray() 
{
	// TODO: Add your command handler code here
	BYTE *buffer;
	buffer=new BYTE[m_size.cx*m_size.cy];
	int i,j;
	for(i=0;i<m_size.cy;i++)
		for(j=0;j<m_size.cx;j++)
		{
			buffer[i*m_size.cx+j]=lpbits[(i*m_size.cx+j)*3]*0.3+
				lpbits[(i*m_size.cx+j)*3+1]*0.59+lpbits[(i*m_size.cx+j)*3+2]*0.11;
		} 
	for(i=0;i<m_size.cy;i++)
		for(j=0;j<m_size.cx;j++)
		{
			lpbits[1024+i*m_size.cx+j]=buffer[i*m_size.cx+j];
		}
	lpbits=lpbits+1024;
	bmh.bfSize=m_size.cx*m_size.cy+1078;
	bmh.bfOffBits=1078;
	lpbmi->bmiHeader.biBitCount=8;
	lpbmi->bmiHeader.biSizeImage=m_size.cx*m_size.cy;
	for(i=0;i<256;i++)
	{
		lpbmi->bmiColors[i].rgbRed =(BYTE)i;
		lpbmi->bmiColors[i].rgbGreen =(BYTE)i;
		lpbmi->bmiColors[i].rgbBlue =(BYTE)i;
		lpbmi->bmiColors[i].rgbReserved=(BYTE)i;
	}
	free(buffer);
	buffer=NULL;
	UpdateAllViews(NULL);
	SetModifiedFlag();
}

void CInfoHideDoc::OnRgbto2() 
{
	// TODO: Add your command handler code here
	BYTE *buffer;
	buffer=new BYTE[m_size.cx*m_size.cy];
	int i,j;
	for(i=0;i<m_size.cy;i++)
		for(j=0;j<m_size.cx;j++)
		{
			if((lpbits[(i*m_size.cx+j)*3]*0.3+
				lpbits[(i*m_size.cx+j)*3+1]*0.59+lpbits[(i*m_size.cx+j)*3+2]*0.11)>127)
				buffer[i*m_size.cx+j]=1;
			else buffer[i*m_size.cx+j]=0;
		}
	for(i=0;i<m_size.cy;i++)
		for(j=0;j<m_size.cx;j=j+8)
		{
			lpbits[8+(i*m_size.cx+j)/8]=(buffer[i*m_size.cx+j]<<7)+(buffer[i*m_size.cx+j+1]<<6)
				+(buffer[i*m_size.cx+j+2]<<5)+(buffer[i*m_size.cx+j+3]<<4)
				+(buffer[i*m_size.cx+j+4]<<3)+(buffer[i*m_size.cx+j+5]<<2)
				+(buffer[i*m_size.cx+j+6]<<1)+(buffer[i*m_size.cx+j+7]);
		}
	lpbits=lpbits+8;
	bmh.bfSize=m_size.cx*m_size.cy/8+62;
	bmh.bfOffBits=62;
	lpbmi->bmiHeader.biBitCount=1;
	lpbmi->bmiHeader.biSizeImage=m_size.cx*m_size.cy/8;
			
	lpbmi->bmiColors[0].rgbRed =(BYTE)0;
	lpbmi->bmiColors[0].rgbGreen =(BYTE)0;
	lpbmi->bmiColors[0].rgbBlue =(BYTE)0;
	lpbmi->bmiColors[0].rgbReserved=(BYTE)0;
	lpbmi->bmiColors[1].rgbRed =(BYTE)255;
	lpbmi->bmiColors[1].rgbGreen =(BYTE)255;
	lpbmi->bmiColors[1].rgbBlue =(BYTE)255;
	lpbmi->bmiColors[1].rgbReserved=(BYTE)255;
	
	free(buffer);
	buffer=NULL;
	UpdateAllViews(NULL);
	SetModifiedFlag();
}

unsigned char BayerPattern[8][8]={0,32, 8,40, 2,34,10,42,
									48,16,56,24,50,18,58,26,
									12,44, 4,36,14,46, 6,38,
									60,28,52,20,62,30,54,22,
									3,35,11,43, 1,33, 9,41,
									51,19,59,27,49,17,57,25,
									15,47, 7,39,13,45, 5,37,
									63,31,55,23,61,29,53,21};

#define ISPAL_PATTERN_SIZE		64			/* 离散数据最大尺寸 */
#define ISPAL_BEGIN		        64			/* 调色板分量起始量 */
#define ISPAL_END		    	224			/* 调色板分量最高值 */
#define ISPAL_STEP			    32			/* 调色板分量间隔 */


void CInfoHideDoc::OnRgbto256() 
{
	// TODO: Add your command handler code here
	int i,j;
	BYTE *buffer;
	buffer=new BYTE[m_size.cx*m_size.cy];
	unsigned long *pal_buffer;
	pal_buffer=new unsigned long[256];
	Creat256Palette(pal_buffer);
	
	for(i=0;i<m_size.cy;i++)
		for(j=0;j<m_size.cx;j++)
		{
			buffer[i*m_size.cx+j]=CnvTo256PalIndex(j,i,lpbits[(i*m_size.cx+j)*3+2],
				lpbits[(i*m_size.cx+j)*3+1],lpbits[(i*m_size.cx+j)*3]);
		} 
	for(i=0;i<m_size.cy;i++)
		for(j=0;j<m_size.cx;j++)
		{
			lpbits[1024+i*m_size.cx+j]=buffer[i*m_size.cx+j];
		}
	lpbits=lpbits+1024;
	bmh.bfSize=m_size.cx*m_size.cy+1078;
	bmh.bfOffBits=1078;
	lpbmi->bmiHeader.biBitCount=8;
	lpbmi->bmiHeader.biSizeImage=m_size.cx*m_size.cy;
	for(i=0;i<256;i++)
	{
		lpbmi->bmiColors[i].rgbRed =(BYTE)((pal_buffer[i]>>16)%256);
		lpbmi->bmiColors[i].rgbGreen =(BYTE)((pal_buffer[i]>>8)%256);
		lpbmi->bmiColors[i].rgbBlue =(BYTE)(pal_buffer[i]%256);
		lpbmi->bmiColors[i].rgbReserved=(BYTE)i;
	}
			
	free(buffer);
	buffer=NULL;
	UpdateAllViews(NULL);
	SetModifiedFlag();
}

int CInfoHideDoc::Creat256Palette(unsigned long *pal)
{
	unsigned long r, g, b;
	int	cnt = 0;
	
	/* 标准调色板 */
	for (r=ISPAL_BEGIN; r<256; r+=ISPAL_STEP)
	{
		for (g=ISPAL_BEGIN; g<256; g+=ISPAL_STEP)
		{
			for (b=ISPAL_BEGIN; b<256; b+=ISPAL_STEP)
			{
				pal[cnt++] = b|(g<<8)|(r<<16);
			}
		}
	}
	
	/* 返回调色板使用项个数 */
	return cnt;
	
}

unsigned long CInfoHideDoc::CnvTo256PalIndex(int x,/* 该象素在图象中的水平位置 */
											 int y,/* 该象素在图象中的垂直位置 */											 
											 unsigned char ucr, /* 象素的R份量 */											 
											 unsigned char ucg,/* 象素的G份量 */ 
											 unsigned char ucb/* 象素的B份量 */
											 )
{
	unsigned long	pix = 0;
	
	if (ucb > ISPAL_BEGIN)
	{
		ucb = (((ISPAL_PATTERN_SIZE*((unsigned int)ucb%ISPAL_STEP))/ISPAL_STEP) < 
			BayerPattern[y&7][x&7]) ? ((unsigned int)ucb/ISPAL_STEP)*ISPAL_STEP : 
		min(((unsigned int)ucb/ISPAL_STEP)*ISPAL_STEP+ISPAL_STEP, ISPAL_END);
	}
	else
	{
		ucb = ISPAL_BEGIN;
	}
	
	if (ucg > ISPAL_BEGIN)
	{
		ucg = (((ISPAL_PATTERN_SIZE*((unsigned int)ucg%ISPAL_STEP))/ISPAL_STEP) < 
			BayerPattern[y&7][x&7]) ? ((unsigned int)ucg/ISPAL_STEP)*ISPAL_STEP : 
		min(((unsigned int)ucg/ISPAL_STEP)*ISPAL_STEP+ISPAL_STEP, ISPAL_END);
	}
	else
	{
		ucg = ISPAL_BEGIN;
	}
	
	if (ucr > ISPAL_BEGIN)
	{
		ucr = (((ISPAL_PATTERN_SIZE*((unsigned int)ucr%ISPAL_STEP))/ISPAL_STEP) < 
			BayerPattern[y&7][x&7]) ? ((unsigned int)ucr/ISPAL_STEP)*ISPAL_STEP : 
		min(((unsigned int)ucr/ISPAL_STEP)*ISPAL_STEP+ISPAL_STEP, ISPAL_END);
	}
	else
	{
		ucr = ISPAL_BEGIN;
	}
	
	pix = ((unsigned long)ucr<<16)|((unsigned long)ucg<<8)|((unsigned long)ucb);
	
	/* 返回该象素在调色板中的索引值 */
	return (((pix&0xff)-ISPAL_BEGIN)/ISPAL_STEP)+
		(((((pix&0xff00)>>8)-ISPAL_BEGIN)/ISPAL_STEP)*6)+
		(((((pix&0xff0000)>>16)-ISPAL_BEGIN)/ISPAL_STEP)*36);
}

void CInfoHideDoc::OnVideoPar()//视频参数的调节 
{
	// TODO: Add your command handler code here
	VIDEO_PAR vp_pdlg;
	if(vp_pdlg.DoModal()==IDOK)
	{
		int i,j;
		int Y,Cb,Cr,u,v;

		if(vp_pdlg.m_slider_bri!=50)//亮度
		{
			for(i=0;i<m_size.cy;i++)
				for(j=0;j<m_size.cx;j++)
				{//改变亮度算法
					Y=0.114*lpbits[(i*m_size.cx+j)*3]+0.587*lpbits[(i*m_size.cx+j)*3+1]
						+0.299*lpbits[(i*m_size.cx+j)*3+2];
					if(Y>234)Y=234;
					if(Y<17)Y=17;
					Cb=128+0.5*lpbits[(i*m_size.cx+j)*3]-0.3313*lpbits[(i*m_size.cx+j)*3+1]
						-0.1687*lpbits[(i*m_size.cx+j)*3+2];
					if(Cb>190)Cb=190;
					if(Cb<66)Cb=66;
					Cr=128-0.0813*lpbits[(i*m_size.cx+j)*3]-0.4187*lpbits[(i*m_size.cx+j)*3+1]
						+0.5*lpbits[(i*m_size.cx+j)*3+2];
					if(Cr>207)Cr=207;
					if(Cr<49)Cr=49;

					if(vp_pdlg.m_slider_bri>50)Y=Y+(234-Y)*(vp_pdlg.m_slider_bri-50)/50;
					else Y=Y+(Y-17)*(vp_pdlg.m_slider_bri-50)/50;
					
					if((Y+1.772*(Cb-128))>255)lpbits[(i*m_size.cx+j)*3]=255;
					else if((Y+1.772*(Cb-128))<0)lpbits[(i*m_size.cx+j)*3]=0;
					else lpbits[(i*m_size.cx+j)*3]=Y+1.772*(Cb-128);
					if((Y-0.34414*(Cb-128)-0.71414*(Cr-128))>255)lpbits[(i*m_size.cx+j)*3+1]=255;
					else if((Y-0.34414*(Cb-128)-0.71414*(Cr-128))<0)lpbits[(i*m_size.cx+j)*3+1]=0;
					else lpbits[(i*m_size.cx+j)*3+1]=Y-0.34414*(Cb-128)-0.71414*(Cr-128);
					if((Y+1.402*(Cr-128))>255)lpbits[(i*m_size.cx+j)*3+2]=255;
					else if((Y+1.402*(Cr-128))<0)lpbits[(i*m_size.cx+j)*3+2]=0;
					else lpbits[(i*m_size.cx+j)*3+2]=Y+1.402*(Cr-128);
				}
		}
		if(vp_pdlg.m_slider_sat!=50)//饱和度
		{
			for(i=0;i<m_size.cy;i++)
				for(j=0;j<m_size.cx;j++)
				{//改变饱和度算法
					Y=0.114*lpbits[(i*m_size.cx+j)*3]+0.587*lpbits[(i*m_size.cx+j)*3+1]
						+0.299*lpbits[(i*m_size.cx+j)*3+2];
					if(Y>255)Y=255;
					if(Y<0)Y=0;
					u=0.437*lpbits[(i*m_size.cx+j)*3]-0.289*lpbits[(i*m_size.cx+j)*3+1]
						-0.147*lpbits[(i*m_size.cx+j)*3+2];
//					if(u>255)u=255;
//					if(u<0)u=0;
					v=-0.1*lpbits[(i*m_size.cx+j)*3]-0.515*lpbits[(i*m_size.cx+j)*3+1]
						+0.615*lpbits[(i*m_size.cx+j)*3+2];
//					if(v>255)v=255;
//					if(v<0)v=0;
					
					if(vp_pdlg.m_slider_sat>50)//时间关系,增大饱和度未做
					{
						
					}
					else//减小饱和度
					{
						u=u+u*(vp_pdlg.m_slider_sat-50)/50;
						v=v+v*(vp_pdlg.m_slider_sat-50)/50;
					}
					
					if((Y+2.032*u)>255)lpbits[(i*m_size.cx+j)*3]=255;
					else if((Y+2.032*u)<0)lpbits[(i*m_size.cx+j)*3]=0;
					else lpbits[(i*m_size.cx+j)*3]=Y+2.032*u;
					if((Y-0.395*u-0.581*v)>255)lpbits[(i*m_size.cx+j)*3+1]=255;
					else if((Y-0.395*u-0.581*v)<0)lpbits[(i*m_size.cx+j)*3+1]=0;
					else lpbits[(i*m_size.cx+j)*3+1]=Y-0.395*u-0.581*v;
					if((Y+1.14*v)>255)lpbits[(i*m_size.cx+j)*3+2]=255;
					else if((Y+1.14*v)<0)lpbits[(i*m_size.cx+j)*3+2]=0;
					else lpbits[(i*m_size.cx+j)*3+2]=Y+1.14*v;
				}
		}
		if(vp_pdlg.m_slider_con!=50)//对比度
		{
			for(i=0;i<m_size.cy;i++)
				for(j=0;j<m_size.cx;j++)
				{//改变对比度算法
					Y=0.114*lpbits[(i*m_size.cx+j)*3]+0.587*lpbits[(i*m_size.cx+j)*3+1]
						+0.299*lpbits[(i*m_size.cx+j)*3+2];
					if(Y>234)Y=234;
					if(Y<17)Y=17;
					Cb=128+0.5*lpbits[(i*m_size.cx+j)*3]-0.3313*lpbits[(i*m_size.cx+j)*3+1]
						-0.1687*lpbits[(i*m_size.cx+j)*3+2];
					if(Cb>190)Cb=190;
					if(Cb<66)Cb=66;
					Cr=128-0.0813*lpbits[(i*m_size.cx+j)*3]-0.4187*lpbits[(i*m_size.cx+j)*3+1]
						+0.5*lpbits[(i*m_size.cx+j)*3+2];
					if(Cr>207)Cr=207;
					if(Cr<49)Cr=49;

					if(vp_pdlg.m_slider_con>50)//增大对比度
					{
						if(Y>125)//原始亮度大于平均值
						{
							Y=Y+(234-Y)*(vp_pdlg.m_slider_con-50)/50;
						}
						else//原始亮度小于平均值
						{
							Y=Y+(17-Y)*(vp_pdlg.m_slider_con-50)/50;
						}
					}
					else//减小对比度
					{
						Y=Y+(Y-125)*(vp_pdlg.m_slider_con-50)/50;
					}
					
					if((Y+1.772*(Cb-128))>255)lpbits[(i*m_size.cx+j)*3]=255;
					else if((Y+1.772*(Cb-128))<0)lpbits[(i*m_size.cx+j)*3]=0;
					else lpbits[(i*m_size.cx+j)*3]=Y+1.772*(Cb-128);
					if((Y-0.34414*(Cb-128)-0.71414*(Cr-128))>255)lpbits[(i*m_size.cx+j)*3+1]=255;
					else if((Y-0.34414*(Cb-128)-0.71414*(Cr-128))<0)lpbits[(i*m_size.cx+j)*3+1]=0;
					else lpbits[(i*m_size.cx+j)*3+1]=Y-0.34414*(Cb-128)-0.71414*(Cr-128);
					if((Y+1.402*(Cr-128))>255)lpbits[(i*m_size.cx+j)*3+2]=255;
					else if((Y+1.402*(Cr-128))<0)lpbits[(i*m_size.cx+j)*3+2]=0;
					else lpbits[(i*m_size.cx+j)*3+2]=Y+1.402*(Cr-128);
				}
		}
		if(vp_pdlg.m_slider_hue!=0)//色调
		{//时间关系,色调未做!
			
		}
	}
	UpdateAllViews(NULL);
	SetModifiedFlag();
}

void CInfoHideDoc::OnRobert() 
{
	// TODO: Add your command handler code here
	//Roberts算子:G[i,i]=|f[i,j]-f[i+1,j+1]|+|f[i+1,j]-f[i,j+1]|;
	int i,j,*pbuffer;
	pbuffer=new int[m_size.cx*m_size.cy*3];//设置中间BUFFER 
	for(i=0;i<m_size.cy;i++)
		for(j=0;j<m_size.cx;j++)
		{
			pbuffer[(i*m_size.cx+j)*3]=lpbits[(i*m_size.cx+j)*3];
			pbuffer[(i*m_size.cx+j)*3+1]=lpbits[(i*m_size.cx+j)*3+1];
			pbuffer[(i*m_size.cx+j)*3+2]=lpbits[(i*m_size.cx+j)*3+2];
		}
	for(i=0;i<(m_size.cy-1);i++)
		for(j=0;j<(m_size.cx-1);j++)
		{
			lpbits[(i*m_size.cx+j)*3]=abs(pbuffer[(i*m_size.cx+j)*3]-pbuffer[((i+1)*m_size.cx+j+1)*3])
				+abs(pbuffer[((i+1)*m_size.cx+j)*3]-pbuffer[(i*m_size.cx+j+1)*3]);
			lpbits[(i*m_size.cx+j)*3+1]=abs(pbuffer[(i*m_size.cx+j)*3+1]-pbuffer[((i+1)*m_size.cx+j+1)*3+1])
				+abs(pbuffer[((i+1)*m_size.cx+j)*3+1]-pbuffer[(i*m_size.cx+j+1)*3+1]);
			lpbits[(i*m_size.cx+j)*3+2]=abs(pbuffer[(i*m_size.cx+j)*3+2]-pbuffer[((i+1)*m_size.cx+j+1)*3+2])
				+abs(pbuffer[((i+1)*m_size.cx+j)*3+2]-pbuffer[(i*m_size.cx+j+1)*3+2]);
		}
	UpdateAllViews(NULL);
	SetModifiedFlag();
}

void CInfoHideDoc::OnSobe() 
{
	// TODO: Add your command handler code here
	//Sobe算子:G[i,i]=|f[i-1,j+1]+2f[i,j+1]+f[i+1,j+1]-f[i-1,j-1]-2f[i,j-1]-f[i+1,j-1]|
	//+|f[i-1,j-1]+2f[i-1,j]+f[i-1,j+1]-f[i+1,j-1]-2f[i+1,j]-f[i+1,j+1]|;
	int i,j,*pbuffer;
	pbuffer=new int[m_size.cx*m_size.cy*3];//设置中间BUFFER 
	for(i=0;i<m_size.cy;i++)
		for(j=0;j<m_size.cx;j++)
		{
			pbuffer[(i*m_size.cx+j)*3]=lpbits[(i*m_size.cx+j)*3];
			pbuffer[(i*m_size.cx+j)*3+1]=lpbits[(i*m_size.cx+j)*3+1];
			pbuffer[(i*m_size.cx+j)*3+2]=lpbits[(i*m_size.cx+j)*3+2];
		}
	for(i=1;i<(m_size.cy-1);i++)
		for(j=1;j<(m_size.cx-1);j++)
		{
			lpbits[(i*m_size.cx+j)*3]=abs(pbuffer[((i-1)*m_size.cx+j+1)*3]+2*pbuffer[(i*m_size.cx+j+1)*3]
				+pbuffer[((i+1)*m_size.cx+j+1)*3]-pbuffer[((i-1)*m_size.cx+j-1)*3]
				-2*pbuffer[(i*m_size.cx+j-1)*3]-pbuffer[((i+1)*m_size.cx+j-1)*3])
				+abs(pbuffer[((i-1)*m_size.cx+j-1)*3]+2*pbuffer[((i-1)*m_size.cx+j)*3]
				+pbuffer[((i-1)*m_size.cx+j+1)*3]-pbuffer[((i+1)*m_size.cx+j-1)*3]
				-2*pbuffer[((i+1)*m_size.cx+j)*3]-pbuffer[((i+1)*m_size.cx+j+1)*3]);
			lpbits[(i*m_size.cx+j)*3+1]=abs(pbuffer[((i-1)*m_size.cx+j+1)*3+1]+2*pbuffer[(i*m_size.cx+j+1)*3+1]
				+pbuffer[((i+1)*m_size.cx+j+1)*3+1]-pbuffer[((i-1)*m_size.cx+j-1)*3+1]
				-2*pbuffer[(i*m_size.cx+j-1)*3+1]-pbuffer[((i+1)*m_size.cx+j-1)*3+1])
				+abs(pbuffer[((i-1)*m_size.cx+j-1)*3+1]+2*pbuffer[((i-1)*m_size.cx+j)*3+1]
				+pbuffer[((i-1)*m_size.cx+j+1)*3+1]-pbuffer[((i+1)*m_size.cx+j-1)*3+1]
				-2*pbuffer[((i+1)*m_size.cx+j)*3+1]-pbuffer[((i+1)*m_size.cx+j+1)*3+1]);
			lpbits[(i*m_size.cx+j)*3+2]=abs(pbuffer[((i-1)*m_size.cx+j+1)*3+2]+2*pbuffer[(i*m_size.cx+j+1)*3+2]
				+pbuffer[((i+1)*m_size.cx+j+1)*3+2]-pbuffer[((i-1)*m_size.cx+j-1)*3+2]
				-2*pbuffer[(i*m_size.cx+j-1)*3+2]-pbuffer[((i+1)*m_size.cx+j-1)*3+2])
				+abs(pbuffer[((i-1)*m_size.cx+j-1)*3+2]+2*pbuffer[((i-1)*m_size.cx+j)*3+2]
				+pbuffer[((i-1)*m_size.cx+j+1)*3+2]-pbuffer[((i+1)*m_size.cx+j-1)*3+2]
				-2*pbuffer[((i+1)*m_size.cx+j)*3+2]-pbuffer[((i+1)*m_size.cx+j+1)*3+2]);
		}
	UpdateAllViews(NULL);
	SetModifiedFlag();
}

void CInfoHideDoc::OnLaplace() 
{
	// TODO: Add your command handler code here
	//拉普拉斯算子:G[I,j]=|f[i+1,j]+f[i-1,j]+f(i,j+1)+f[i,j-1]-4f[i,j]|;
	int i,j,*pbuffer;
	pbuffer=new int[m_size.cx*m_size.cy*3];//设置中间BUFFER 
	for(i=0;i<m_size.cy;i++)
		for(j=0;j<m_size.cx;j++)
		{
			pbuffer[(i*m_size.cx+j)*3]=lpbits[(i*m_size.cx+j)*3];
			pbuffer[(i*m_size.cx+j)*3+1]=lpbits[(i*m_size.cx+j)*3+1];
			pbuffer[(i*m_size.cx+j)*3+2]=lpbits[(i*m_size.cx+j)*3+2];
		}
	for(i=1;i<(m_size.cy-1);i++)
		for(j=1;j<(m_size.cx-1);j++)
		{
			lpbits[(i*m_size.cx+j)*3]=abs(pbuffer[((i+1)*m_size.cx+j)*3]+pbuffer[((i-1)*m_size.cx+j)*3]
				+pbuffer[(i*m_size.cx+j+1)*3]+pbuffer[(i*m_size.cx+j-1)*3]
				-4*pbuffer[(i*m_size.cx+j)*3]);
			lpbits[(i*m_size.cx+j)*3+1]=abs(pbuffer[((i+1)*m_size.cx+j)*3+1]+pbuffer[((i-1)*m_size.cx+j)*3+1]
				+pbuffer[(i*m_size.cx+j+1)*3+1]+pbuffer[(i*m_size.cx+j-1)*3+1]
				-4*pbuffer[(i*m_size.cx+j)*3+1]);
			lpbits[(i*m_size.cx+j)*3+2]=abs(pbuffer[((i+1)*m_size.cx+j)*3+2]+pbuffer[((i-1)*m_size.cx+j)*3+2]
				+pbuffer[(i*m_size.cx+j+1)*3+2]+pbuffer[(i*m_size.cx+j-1)*3+2]
				-4*pbuffer[(i*m_size.cx+j)*3+2]);
		}
	UpdateAllViews(NULL);
	SetModifiedFlag();
}

⌨️ 快捷键说明

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