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

📄 gatherdlg.cpp

📁 一个关于聚类应用的程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	}
	}
	rgbF.R=rgbF.R/((x11-x)*(y11-y));
	rgbF.G=rgbF.G/((x11-x)*(y11-y));
	rgbF.B=rgbF.B/((x11-x)*(y11-y));
	
	return rgbF;

}

void CGatherDlg::OnButton1() 
{

	// TODO: Add your control notification handler code here

	m_list.ResetContent();
	CClientDC pDC(this);
	HBITMAP hbitmap=(HBITMAP)LoadImage(NULL,
		"F:/科大/课件/模式识别/Gather/p2_test1.bmp",//s4b
		IMAGE_BITMAP,
		0,
		0,
		LR_LOADFROMFILE
		);
	bitmap.Attach(hbitmap);
	dcComp.CreateCompatibleDC(&pDC);
	dcComp.SelectObject(&bitmap);
	bitmap.GetObject(sizeof(bmInfo),&bmInfo);
	
	
	//GetClientRect(rect);
	pDC.StretchBlt(
		// handle to destination DC
		0, // x-coord of destination upper-left corner
		0, // y-coord of destination upper-left corner
		bmInfo.bmWidth,//500,//   // width of destination rectangle
		bmInfo.bmHeight,// 700,// // height of destination rectangle
		&dcComp,       // handle to source DC
		0,  // x-coord of source upper-left corner
		0,  // y-coord of source upper-left corner
		bmInfo.bmWidth,    // width of source rectangle
		bmInfo.bmHeight,   // height of source rectangle
		SRCCOPY       // raster operation code
		);
	GetbmpSize(bmInfo);
	StoreRGB(bmInfo);
	//	PintRGB(bmInfo);
	ReleaseDC(&pDC);
	
}

void CGatherDlg::OnButton2() 
{
	// TODO: Add your control notification handler code here

	m_list.ResetContent();
	CClientDC pDC1(this);
	HBITMAP hbitmap1=(HBITMAP)LoadImage(NULL,
		"F:/科大/课件/模式识别/Gather/p2_test2.bmp",
		IMAGE_BITMAP,
		0,
		0,
		LR_LOADFROMFILE
		);
	bitmap1.Attach(hbitmap1);
	dcComp1.CreateCompatibleDC(&pDC1);
	dcComp1.SelectObject(&bitmap1);
	bitmap1.GetObject(sizeof(bmInfo1),&bmInfo1);
	
	
	//GetClientRect(rect);
	pDC1.StretchBlt(
		// handle to destination DC
		0, // x-coord of destination upper-left corner
		0, // y-coord of destination upper-left corner
		bmInfo1.bmWidth,//500,//   // width of destination rectangle
		bmInfo1.bmHeight,// 700,// // height of destination rectangle
		&dcComp1,       // handle to source DC
		0,  // x-coord of source upper-left corner
		0,  // y-coord of source upper-left corner
		bmInfo1.bmWidth,    // width of source rectangle
		bmInfo1.bmHeight,   // height of source rectangle
		SRCCOPY       // raster operation code
		);
	GetbmpSize(bmInfo1);
		 	StoreRGB(bmInfo1);
			// PintRGB(bmInfo1);
			ReleaseDC(&pDC1);
	
}

BOOL CGatherDlg::GetbmpSize(BITMAP bm)
{
	m_wide=bm.bmWidth;
	m_hieght=bm.bmHeight;
	wide=m_wide;
	hieght=m_hieght;
	UpdateData(FALSE);
	return TRUE;

}

BOOL CGatherDlg::StoreRGB(BITMAP bm1)
{
	int rs=0;
	int gs=0;
	int bs=0;
	COLORREF Colorstore;
	CClientDC pDC3(this);
    for(i=0;i<wide;i++)
	   {	for(j=0;j<hieght;j++)
	{       
		Colorstore = pDC3.GetPixel(i,j); //获取当前鼠标点像素值
		rs=GetRValue(Colorstore);
		gs=GetGValue(Colorstore);
		bs=GetBValue(Colorstore);
		rdata[i][j]=rs;
		gdata[i][j]=gs;
		bdata[i][j]=bs;	
	}
	}
	i=0;
	j=0;

	return TRUE;	
	ReleaseDC(&pDC3);

}

void CGatherDlg::ShowRGB(int x, int y, int x1, int y1,int BiaoZhi)
{
	
	CString str;
//	CString str1;



	if(BiaoZhi==0)
	{
		if(jj==0)
		{str.Format("%d %s  %f    %f    %f",1,"红",rgb1[jj].R,rgb1[jj].G,rgb1[jj].B);}
		if(jj==1)
		{str.Format("%d %s  %f    %f    %f",2,"绿",rgb1[jj].R,rgb1[jj].G,rgb1[jj].B);}
		if(jj==2)
		{str.Format("%d %s  %f    %f    %f",3,"蓝",rgb1[jj].R,rgb1[jj].G,rgb1[jj].B);}
		if(jj==3)
		{str.Format("%d %s  %f    %f    %f",4,"黄",rgb1[jj].R,rgb1[jj].G,rgb1[jj].B);}
		if(jj==4)
		{str.Format("%d %s %f    %f    %f",5,"品红",rgb1[jj].R,rgb1[jj].G,rgb1[jj].B);}
		if(jj==5)
		{str.Format("%d %s  %f    %f    %f",6,"青",rgb1[jj].R,rgb1[jj].G,rgb1[jj].B);}
		if(jj==6)
		{str.Format("%d %s %f    %f    %f",7,"暗紫",rgb1[jj].R,rgb1[jj].G,rgb1[jj].B);}
		if(jj==7)
		{str.Format("%d %s %f    %f    %f",8,"暗青",rgb1[jj].R,rgb1[jj].G,rgb1[jj].B);}
		if(jj==8)
		{str.Format("%d %s %f    %f    %f",9,"天蓝",rgb1[jj].R,rgb1[jj].G,rgb1[jj].B);}
		if(jj==9)
		{str.Format("%d %s  %f    %f    %f",10,"白",rgb1[jj].R,rgb1[jj].G,rgb1[jj].B);}
		
		//m_list.InsertString(jj,str1);
		//str.Format("%d     %d     %d     %d     %d",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);
		m_list.InsertString(jj+1,str);
		jj++;	
		
/*		//m_list.InsertString(jj,str1);
	for(i=x;i<x1;i++)
	{	for(j=y;j<y1;j++)
	{   
		str.Format("%d     %d     %d     %d     %d",i,j,rdata[i][j],gdata[i][j],bdata[i][j]);
		//str.Format("%d     %d     %d     %d     %d",i,j,rgb[jj].R,rgb[jj].G,rgb[jj].B);
		m_list.InsertString(jj+1,str);
		jj++;
	}	
	}
*/
	}
	if(BiaoZhi==1)

	{   	
		
	if(jj==0)
	{str.Format("%d %s  %d    %d    %d    %d    %d",1,"红",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);}
	if(jj==1)
	{str.Format("%d %s  %d    %d    %d    %d    %d",2,"绿",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);}
	if(jj==2)
	{str.Format("%d %s  %d    %d    %d    %d    %d",3,"蓝",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);}
	if(jj==3)
	{str.Format("%d %s  %d    %d    %d    %d    %d",4,"黄",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);}
	if(jj==4)
	{str.Format("%d %s %d    %d    %d    %d    %d",5,"品红",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);}
	if(jj==5)
	{str.Format("%d %s  %d    %d    %d    %d    %d",6,"青",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);}
	if(jj==6)
	{str.Format("%d %s %d    %d    %d    %d    %d",7,"暗紫",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);}
	if(jj==7)
	{str.Format("%d %s %d    %d    %d    %d    %d",8,"暗青",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);}
	if(jj==8)
	{str.Format("%d %s %d    %d    %d    %d    %d",9,"天蓝",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);}
	if(jj==9)
	{str.Format("%d %s  %d    %d    %d    %d    %d",10,"白",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);}
	
		//m_list.InsertString(jj,str1);
		//str.Format("%d     %d     %d     %d     %d",x,y,rdata[x][y],gdata[x][y],bdata[x][y]);
		m_list.InsertString(jj+1,str);
		jj++;	
	}


	if(BiaoZhi==2)
	{
		if(y1==0)
		{str.Format("%d %s  %f    %f    %f",1,"红",rgb1[y1].R,rgb1[y1].G,rgb1[y1].B);}
		if(y1==1)
		{str.Format("%d %s  %f    %f    %f",2,"绿",rgb1[y1].R,rgb1[y1].G,rgb1[y1].B);}
		if(y1==2)
		{str.Format("%d %s  %f    %f    %f",3,"蓝",rgb1[y1].R,rgb1[y1].G,rgb1[y1].B);}
		if(y1==3)
		{str.Format("%d %s  %f    %f    %f",4,"黄",rgb1[y1].R,rgb1[y1].G,rgb1[y1].B);}
		if(y1==4)
		{str.Format("%d %s %f    %f    %f",5,"品红",rgb1[y1].R,rgb1[y1].G,rgb1[y1].B);}
		if(y1==5)
		{str.Format("%d %s  %f    %f    %f",6,"青",rgb1[y1].R,rgb1[y1].G,rgb1[y1].B);}
		if(y1==6)
		{str.Format("%d %s %f    %f    %f",7,"暗紫",rgb1[y1].R,rgb1[y1].G,rgb1[y1].B);}
		if(y1==7)
		{str.Format("%d %s %f    %f    %f",8,"暗青",rgb1[y1].R,rgb1[y1].G,rgb1[y1].B);}
		if(y1==8)
		{str.Format("%d %s %f    %f    %f",9,"天蓝",rgb1[y1].R,rgb1[y1].G,rgb1[y1].B);}
		if(y1==9)
		{str.Format("%d %s  %f    %f    %f",10,"白",rgb1[y1].R,rgb1[y1].G,rgb1[y1].B);}
		

		m_list.InsertString(jj+1,str);
		
		jj++;

	}
	

}

void CGatherDlg::SetZero(int lei,int rrr)
{
	if(rrr==0)
	{
		for(i=0;i<wide*hieght;i++)
		{
		for(j=0;j<lei;j++)
		{
			gdt[j][i]=0;
			rdt[j][i]=0;
			bdt[j][i]=0;
		}
		
		}
	}

	if(rrr==1)
	{
		for(i=0;i<lei;i++)
			rgb[i].R=0;
		    rgb[i].G=0;
		    rgb[i].B=0;
	}
    
}

BOOL CGatherDlg::PintRGB(int juleimoshi)
{
	COLORREF crColor1;
	CClientDC pDC4(this);
	COLORREF Colorstore1;
	COLORREF Colorstore2;
	int kkk=0;
	Colorstore1 = pDC4.GetPixel(1,hieght+1);
	for(i=0;i<wide;i++,kkk++)
	   {	
		
		for(j=0;j<hieght;j++)
		{
		
			Colorstore1 = pDC4.GetPixel(i,j); //获取当前点像素值
		
		//原点(400,10)
		if(juleimoshi==1)//r,g
		{
			if(kkk>255)
			{
				kkk=0;
			}
			crColor1=pDC4.SetPixel( rdata[i][j]+xstart,kkk+ystart, Colorstore1);
		m=1;
		}
		if(juleimoshi==2)//r,b
		{
			if(kkk>255)
			{
				kkk=0;
			}
			crColor1=pDC4.SetPixel( gdata[i][j]+xstart,kkk+ystart, Colorstore1);
		m=1;
		}
        if(juleimoshi==3)//b,g
		{
			if(kkk>255)
			{
				kkk=0;
			}
			crColor1=pDC4.SetPixel( bdata[i][j]+xstart,kkk+ystart, Colorstore1);
		m=1;
		}
		if(juleimoshi==4)//r,g
		{crColor1=pDC4.SetPixel( rdata[i][j]+xstart,gdata[i][j]+ystart, Colorstore1);
		m=1;
		}
		if(juleimoshi==5)//r,b
		{crColor1=pDC4.SetPixel( rdata[i][j]+xstart,bdata[i][j]+ystart, Colorstore1);
		m=1;
		}
        if(juleimoshi==6)//b,g
		{crColor1=pDC4.SetPixel( bdata[i][j]+xstart,gdata[i][j]+ystart, Colorstore1);
		m=1;
		}
		if(juleimoshi==0)
		{

			crColor1=pDC4.SetPixel( i+600,j, Colorstore2);
		}
			
		
		
	}
		
	}
	if(juleimoshi==0)
	{
		for(i=0;i<xs1-xs;i++)
		{	for(j=0;j<ye-ys;j++)
		{
			
			crColor1=pDC4.SetPixel( i+xs,j+ys, RGB(0,0,0));
		}
		}
		for(i=0;i<xstart1-xstart;i++)
		{	for(j=0;j<yend-ystart;j++)
		{
			crColor1=pDC4.SetPixel(i+xstart,j+ystart, RGB(0,0,0));
		}
		}
	}
	i=0;
	j=0;
	
	ReleaseDC(&pDC4);
	return TRUE;

}

int CGatherDlg::Min(double *min, int leishu)
{
	double t,tt;
	int   t1,tt1;
	double *minmize=min;
	int mun[10];
	int * munmize=mun;
	
	for(int i=0;i<leishu;i++)
	{
		mun[i]=i; 
	}
	
	t1=mun[0];
	t=*min;
	
	for( i=1;i<leishu;i++)
	{
		minmize++;
		munmize++;
		if(t>*minmize)
		{
			//tt=t;
			//t=*minmize;
			//*minmize=tt;
			
			tt1=t1;
			t1=*munmize;
			*munmize=tt1;
		}
		
	}
	
	return t1;	

}

BOOL CGatherDlg::GetCrentPoint(BITMAP bmpoint, CPoint pointbm)
{
	if(pointbm.y<=bmpoint.bmHeight&&pointbm.x<=bmpoint.bmWidth)
	{y=pointbm.y;
	x=pointbm.x;}
	else
	{y=0;
	x=0;}
	
	UpdateData(FALSE);
	return TRUE;

}

void CGatherDlg::GatherPintRGB(int leishu)
{
		COLORREF crColor1;
	CClientDC pDC4(this);
	//COLORREF Colorstore1;
	int single[10]={0,0,0,0,0,0,0,0,0,0};
    int ii=0;
	for(i=0;i<wide;i++)
	  {	
		for(j=0;j<hieght;j++)
	
		{
			int single[10]={0,0,0,0,0,0,0,0,0,0};
			for(int lei=0;lei<leishu;lei++)
			{
				
//////////////////////三维模式////////////////////////////				
				if(juleimoshi==7)
				{
				
				if(bdt[lei][ii]==1&&gdt[lei][ii]==1&&rdt[lei][ii]==1)
				{
					single[lei]=1;
					
				}
				if(bdt[lei][ii]==0&&gdt[lei][ii]==0&&rdt[lei][ii]==0)
				{
                    single[lei]=0;
				}
				}
 /////////////////////一维模式///////////////////////////////////////               
				if(juleimoshi==1)
				{
					if(rdt[lei][ii]==1)
					{
						single[lei]=1;
						
					}
					if(rdt[lei][ii]==0)
					{
						single[lei]=0;
					}
				}

				if(juleimoshi==2)
				{
                    if(gdt[lei][ii]==1)
					{
						single[lei]=1;
						
					}
					if(gdt[lei][ii]==0)
					{
						single[lei]=0;
					}
				}

				if(juleimoshi==3)
				{
                    if(bdt[lei][ii]==1)
					{
						single[lei]=1;
						
					}
					if(bdt[lei][ii]==0)
					{
						single[lei]=0;
					}
				}
///////////////////二维模式///////////////////////////////////
				if(juleimoshi==4)
				{
					if(gdt[lei][ii]==1&&rdt[lei][ii]==1)
					{
						single[lei]=1;
						
					}
					if(gdt[lei][ii]==0&&rdt[lei][ii]==0)
					{
						single[lei]=0;
					}
				}

				if(juleimoshi==5)
				{
					if(bdt[lei][ii]==1&&rdt[lei][ii]==1)
					{
						single[lei]=1;
						
					}
					if(bdt[lei][ii]==0&&rdt[lei][ii]==0)
					{
						single[lei]=0;
					}
				}

				if(juleimoshi==6)
				{
					if(bdt[lei][ii]==1&&gdt[lei][ii]==1)
					{
						single[lei]=1;
						
					}
					if(bdt[lei][ii]==0&&gdt[lei][ii]==0)
					{
						single[lei]=0;
					}
				}
///////////////////////////////////////////////////////////////////////
			}
			
            //if(single[0]==1)
		//	{
			//	crColor1=pDC4.SetPixel( i+601,j+250, RGB(255,0,0));
		//	}
			//if(single[0]==0&&single[1]==1)
			//{
			//	crColor1=pDC4.SetPixel( i+601,j+250, RGB(0,255,0));
			//}
			//crColor1=pDC4.SetPixel( i+601,j+250, RGB(255,0,0));
            if(single[0]==1&&single[1]==0&&single[2]==0&&single[3]==0&&single[4]==0
				&&single[5]==0&&single[6]==0&&single[7]==0&&single[8]==0&&single[9]==0)
			{
				crColor1=pDC4.SetPixel( i+600,j, RGB(255,0,0));
			}
			if(single[0]==0&&single[1]==1&&single[2]==0&&single[3]==0&&single[4]==0
				&&single[5]==0&&single[6]==0&&single[7]==0&&single[8]==0&&single[9]==0)
			{
				crColor1=pDC4.SetPixel( i+600,j, RGB(0,255,0));
			}
			if(single[0]==0&&single[1]==0&&single[2]==1&&single[3]==0&&single[4]==0
				&&single[5]==0&&single[6]==0&&single[7]==0&&single[8]==0&&single[9]==0)
			{
				crColor1=pDC4.SetPixel( i+600,j, RGB(0,0,255));
			}
			if(single[0]==0&&single[1]==0&&single[2]==0&&single[3]==1&&single[4]==0
				&&single[5]==0&&single[6]==0&&single[7]==0&&single[8]==0&&single[9]==0)
			{
				crColor1=pDC4.SetPixel( i+600,j, RGB(255,255,0));
			}
			if(single[0]==0&&single[1]==0&&single[2]==0&&single[3]==0&&single[4]==1
				&&single[5]==0&&single[6]==0&&single[7]==0&&single[8]==0&&single[9]==0)
			{
				crColor1=pDC4.SetPixel( i+600,j, RGB(255,0,255));

⌨️ 快捷键说明

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