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

📄 gatherdlg.cpp

📁 一个关于聚类应用的程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			CPen * oldpen=pDC5.SelectObject(&pen4[2]);
			pDC5.MoveTo(xs+aa[i].B,ys+z2[1]);
			pDC5.LineTo(xs+bb[i].B,ys+z2[0]);
			pDC5.SelectObject(oldpen);
			z2[0]=z2[0]+10;
		}
		if(i==3)
		{
			z3[1]=z3[1]+10;
			pen4[3].CreatePen(PS_SOLID,2,RGB(255,255,0));
			CPen * oldpen=pDC5.SelectObject(&pen4[3]);
			pDC5.MoveTo(xs+aa[i].B,ys+z3[1]);
			pDC5.LineTo(xs+bb[i].B,ys+z3[0]);
			pDC5.SelectObject(oldpen);
			z3[0]=z3[0]+10;
		}
		if(i==4)
		{
			z4[1]=z4[1]+10;
			pen4[4].CreatePen(PS_SOLID,2,RGB(255,0,255));
			CPen * oldpen=pDC5.SelectObject(&pen4[4]);
			pDC5.MoveTo(xs+aa[i].B,ys+z4[1]);
			pDC5.LineTo(xs+bb[i].B,ys+z4[0]);
			pDC5.SelectObject(oldpen);
			z4[0]=z4[0]+10;
		}
		if(i==5)
		{
			z5[1]=z5[1]+10;
			pen4[5].CreatePen(PS_SOLID,2,RGB(0,255,255));
			CPen * oldpen=pDC5.SelectObject(&pen4[5]);
			pDC5.MoveTo(xs+aa[i].B,ys+z5[1]);
			pDC5.LineTo(xs+bb[i].B,ys+z5[0]);
			pDC5.SelectObject(oldpen);
			z5[0]=z5[0]+10;
		}
		if(i==6)
		{
			z6[1]=z6[1]+10;
			pen4[6].CreatePen(PS_SOLID,2,RGB(128,0,128));
			CPen * oldpen=pDC5.SelectObject(&pen4[6]);
			pDC5.MoveTo(xs+aa[i].B,ys+z6[1]);
			pDC5.LineTo(xs+bb[i].B,ys+z6[0]);
			pDC5.SelectObject(oldpen);
			z6[0]=z6[0]+10;
		}
		if(i==7)
		{
			z7[1]=z7[1]+10;
			pen4[7].CreatePen(PS_SOLID,2,RGB(0,128,128));
			CPen * oldpen=pDC5.SelectObject(&pen4[7]);
			pDC5.MoveTo(xs+aa[i].B,ys+z7[1]);
			pDC5.LineTo(xs+bb[i].B,ys+z7[0]);
			pDC5.SelectObject(oldpen);
			z7[0]=z7[0]+10;
		}
		if(i==8)
		{
			z8[1]=z8[1]+10;
			pen4[8].CreatePen(PS_SOLID,2,RGB(116,202,240));
			CPen * oldpen=pDC5.SelectObject(&pen4[8]);
			pDC5.MoveTo(xs+aa[i].B,ys+z8[1]);
			pDC5.LineTo(xs+bb[i].B,ys+z8[0]);
			pDC5.SelectObject(oldpen);
			z8[0]=z8[0]+10;
		}
		if(i==9)
		{
			z9[1]=z9[1]+10;
			pen4[9].CreatePen(PS_SOLID,2,RGB(255,255,255));
			CPen * oldpen=pDC5.SelectObject(&pen4[9]);
			pDC5.MoveTo(xs+aa[i].B,ys+z9[1]);
			pDC5.LineTo(xs+bb[i].B,ys+z9[0]);
			pDC5.SelectObject(oldpen);
			z9[0]=z9[0]+10;
		}
	}

	if(juleimoshi==70)
	{
		//for(i=0;i<leishu;i++)
		//{
		if(i==0)
		{
			pen4[0].CreatePen(PS_SOLID,2,RGB(255,0,0));
			CPen * oldpen=pDC5.SelectObject(&pen4[0]);
			pDC5.MoveTo(xs+aa[i].R,ys+i*10);
			pDC5.LineTo(xs+bb[i].R,ys+i*10);
			pDC5.SelectObject(oldpen);
		}
		if(i==1)
		{
			pen4[1].CreatePen(PS_SOLID,2,RGB(0,255,0));
			CPen * oldpen=pDC5.SelectObject(&pen4[1]);
			pDC5.MoveTo(xs+aa[i].R,ys+i*10);
			pDC5.LineTo(xs+bb[i].R,ys+i*10);
			pDC5.SelectObject(oldpen);
		}
		if(i==2)
		{
			pen4[2].CreatePen(PS_SOLID,2,RGB(0,0,255));
			CPen * oldpen=pDC5.SelectObject(&pen4[2]);
			pDC5.MoveTo(xs+aa[i].R,ys+i*10);
			pDC5.LineTo(xs+bb[i].R,ys+i*10);
			pDC5.SelectObject(oldpen);
		}
		if(i==3)
		{
			pen4[3].CreatePen(PS_SOLID,2,RGB(255,255,0));
			CPen * oldpen=pDC5.SelectObject(&pen4[3]);
			pDC5.MoveTo(xs+aa[i].R,ys+i*10);
			pDC5.LineTo(xs+bb[i].R,ys+i*10);
			pDC5.SelectObject(oldpen);
		}
		if(i==4)
		{
			pen4[4].CreatePen(PS_SOLID,2,RGB(255,0,255));
			CPen * oldpen=pDC5.SelectObject(&pen4[4]);
			pDC5.MoveTo(xs+aa[i].R,ys+i*10);     
			pDC5.LineTo(xs+bb[i].R,ys+i*10);
			pDC5.SelectObject(oldpen);
		}
		if(i==5)
		{
			pen4[5].CreatePen(PS_SOLID,2,RGB(0,255,255));
			CPen * oldpen=pDC5.SelectObject(&pen4[5]);
			pDC5.MoveTo(xs+aa[i].R,ys+i*10);
			pDC5.LineTo(xs+bb[i].R,ys+i*10);
			pDC5.SelectObject(oldpen);
		}
		if(i==6)
		{
			pen4[6].CreatePen(PS_SOLID,2,RGB(128,0,128));
			CPen * oldpen=pDC5.SelectObject(&pen4[6]);
			pDC5.MoveTo(xs+aa[i].R,ys+i*10);
			pDC5.LineTo(xs+bb[i].R,ys+i*10);
			pDC5.SelectObject(oldpen);
		}
		if(i==7)
		{
			pen4[7].CreatePen(PS_SOLID,2,RGB(0,128,128));
			CPen * oldpen=pDC5.SelectObject(&pen4[7]);
			pDC5.MoveTo(xs+aa[i].R,ys+i*10);
			pDC5.LineTo(xs+bb[i].R,ys+i*10);
			pDC5.SelectObject(oldpen);
		}
		if(i==8)
		{
			pen4[8].CreatePen(PS_SOLID,2,RGB(116,202,240));
			CPen * oldpen=pDC5.SelectObject(&pen4[8]);
			pDC5.MoveTo(xs+aa[i].R,ys+i*10);
			pDC5.LineTo(xs+bb[i].R,ys+i*10);
			pDC5.SelectObject(oldpen);
		}
		if(i==9)
		{
			pen4[9].CreatePen(PS_SOLID,2,RGB(255,255,255));
			CPen * oldpen=pDC5.SelectObject(&pen4[9]);
			pDC5.MoveTo(xs+aa[i].R,ys+i*10);
			pDC5.LineTo(xs+bb[i].R,ys+i*10);
			pDC5.SelectObject(oldpen);
		}
	}
		
/*		if(leishu==2)
		{
		CPen pen41;
		CPen pen4[10];
		pen4[0].CreatePen(PS_SOLID,1,RGB(255,0,0));
		pen4[1].CreatePen(PS_SOLID,1,RGB(0,255,0));
		pen4[2].CreatePen(PS_SOLID,1,RGB(0,0,255));
		pen4[3].CreatePen(PS_SOLID,1,RGB(255,255,0));
		pen4[4].CreatePen(PS_SOLID,1,RGB(255,0,255));
		pen4[5].CreatePen(PS_SOLID,1,RGB(0,255,255));
		pen4[6].CreatePen(PS_SOLID,1,RGB(128,0,128));
		pen4[7].CreatePen(PS_SOLID,1,RGB(0,128,128));
		pen4[8].CreatePen(PS_SOLID,1,RGB(116,202,240));
		pen4[9].CreatePen(PS_SOLID,1,RGB(0,0,0));
*/
		
		
		

		
	

	
     
}

void CGatherDlg::OnButton7() //界面初始化
{
	// TODO: Add your control notification handler code here
	CPen pen;
	CClientDC pDC2(this);
	//	CClientDC pDC4(this);
	COLORREF crColor;
	
	for(i=0;i<xs1-xs;i++)
	   {	for(j=0;j<ye-ys;j++)
	{
		crColor=pDC2.SetPixel(i+xs,j+ys, RGB(255,255,255));
		//crColor=pDC2.SetPixel(i+401,j+9, RGB(0,0,0));
	}
	}
	for(i=0;i<xstart1-xstart;i++)
	   {	for(j=0;j<yend-ystart;j++)
	{
		crColor=pDC2.SetPixel(i+xstart,j+ystart, RGB(255,255,255));
		//crColor=pDC2.SetPixel(i+401,j+9, RGB(0,0,0));
	}
	}
	
	//	ReleaseDC(&pDC4);
	if(pen.CreatePen(PS_SOLID,2,RGB(0,255,0)) )
	{
		//MessageBox("line right!");
		CPen * oldpen=pDC2.SelectObject(&pen);
		pDC2.MoveTo(xstart,ystart);
		pDC2.LineTo(xend,yend);
		pDC2.MoveTo(xstart1,ystart1);
		pDC2.LineTo(xend,yend);
		
		pDC2.MoveTo(xs,ys);
		pDC2.LineTo(xe,ye);
		pDC2.MoveTo(xs1,ys1);
		pDC2.LineTo(xe,ye);
		
		pDC2.SelectObject(oldpen);
		
	}
	else
	{
		MessageBox("line wrong!");
	}
	JuLeiCiShuXianShi=0;
	
}

void CGatherDlg::OnButton8ChongZhi() 
{
	// TODO: Add your control notification handler code here
	ReleaseDC(&dcComp);
	ReleaseDC(&dcComp1);
	z0[0]=0;
	z1[0]=0;
	z2[0]=0;
	z0[1]=0;
	z1[1]=0;
	z2[1]=0;
	z3[0]=0;
	z4[0]=0;
	z5[0]=0;
	z3[1]=0;
	z4[1]=0;
	z5[1]=0;
	z6[0]=0;
	z7[0]=0;
	z8[0]=0;
	z6[1]=0;
	z7[1]=0;
	z8[1]=0;
	z9[0]=0;
	z9[1]=0;
	mmm0=0;
	mmm1=0;
	mmm2=0;
	mmm3=0;
	mmm4=0;//WetherMove()函数调用标志
	mmm5=0;
	mmm6=0;
	mmm7=0;
	mmm8=0;
	mmm9=0;//WetherMove()函数调用标志
	JuLeiCiShuXianShi=0;
	m_list.ResetContent();
	m_list1.ResetContent();
	juleimoshi=0;
	SetZero(ClassNum,1);
	ClassNum=0;
	FindCenterCount=0;
	jj=0;//ShowRGB()函数调用
	jjj=0;//WetherMove()函数调用计数
    JiShuShangXian=0;
	dian=0;
	kuang=0;
	SetmyRGBZero();
	PintRGB(0);
	
}

void CGatherDlg::ShowCenter(myRGB Center_rgb[],int i)
{

	m_list.ResetContent();
	CString str;
	CString str1;

	str1.Format("%s     %s       %s       %s","类数","R","G","B");
	m_list.InsertString(i,str1);

 
		str.Format("%d     %f     %f     %f",i,Center_rgb[i].R,Center_rgb[i].G,Center_rgb[i].B);
		m_list.InsertString(i+1,str);
	
UpdateData(FALSE);	
	
}

void CGatherDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CClientDC pDC2(this);
	if(point.x<wide&&point.y<hieght)
	{COLORREF clr = pDC2.GetPixel(point.x,point.y); //获取当前鼠标点像素值
	
	m_r=GetRValue(clr);
	m_g=GetGValue(clr);
	m_b=GetBValue(clr);
	m_y=point.y;
	m_x=point.x;
	//x=m_x;
	//y=m_y;

	DisBiaoZhi=m_Combolei.GetCurSel();
	
    DisTance=CaculateDis(rgb1,point.x,point.y,DisBiaoZhi);
	
	
	m_strRG.Format("%lf",DisTance.RGDis);
	m_strRB.Format("%lf",DisTance.RBDis);
	m_strBG.Format("%lf",DisTance.BGDis);
	m_strRGB.Format("%lf",DisTance.RGBDis);
	m_strR.Format("%lf",DisTance.RDis);
	m_strG.Format("%lf",DisTance.GDis);
	m_strB.Format("%lf",DisTance.BDis);

			
	}
/*	else
	{
		m_r=0;
		m_g=0;
		m_b=0;
		m_y=0;
		m_x=0;	
	}
*/
   	ReleaseDC(&pDC2);
	UpdateData(FALSE);
	
	CDialog::OnMouseMove(nFlags, point);
}

void CGatherDlg::SetmyRGBZero()
{

	for(i=0;i<10;i++)
	{
		rgb[i].R=0;
		rgb[i].G=0;
		rgb[i].B=0;
	}
}

DIS CGatherDlg::CaculateDis(myRGB rgbGther[],int i,int j,int lei)
{
	
	DIS distance;
	double bdd,gdd,rdd;
	//double disd,dis_rgd,dis_rbd,dis_bgd;
/*
	if(juleimoshi==7)
	{
		bdd=fabs((bdata[i][j]-rgbGther[lei].B));
		gdd=fabs((gdata[i][j]-rgbGther[lei].G));
		rdd=fabs((rdata[i][j]-rgbGther[lei].R));
		disd=sqrt(pow(gdd,2)+pow(rdd,2)+pow(bdd,2));
		
	}
	
	if(juleimoshi==4)
	{
		gdd=fabs((gdata[i][j]-rgbGther[lei].G));
		rdd=fabs((rdata[i][j]-rgbGther[lei].R));
		dis_rgd=sqrt(pow(gdd,2)+pow(rdd,2));
	}
	
	if(juleimoshi==5) 
	{
		bdd=fabs((bdata[i][j]-rgbGther[lei].B));
		rdd=fabs((rdata[i][j]-rgbGther[lei].R));
		dis_rbd=sqrt(pow(bdd,2)+pow(rdd,2));
	}
	
	if(juleimoshi==6)
	{
		gdd=fabs((gdata[i][j]-rgbGther[lei].G));
		bdd=fabs((bdata[i][j]-rgbGther[lei].B));
		dis_bgd=sqrt(pow(gdd,2)+pow(bdd,2));
	}

	else
	{
		distance.BGDis=0;
		distance.RBDis=0;
		distance.RGBDis=0;
		distance.RGDis=0;
	}

*/
    bdd=fabs((bdata[i][j]-rgbGther[lei].B));
	gdd=fabs((gdata[i][j]-rgbGther[lei].G));
	rdd=fabs((rdata[i][j]-rgbGther[lei].R));
	//dis_bgd=sqrt(pow(gdd,2)+pow(bdd,2));
	//dis_rbd=sqrt(pow(bdd,2)+pow(rdd,2));
	//dis_rgd=sqrt(pow(gdd,2)+pow(rdd,2));
	//disd=sqrt(pow(gdd,2)+pow(rdd,2)+pow(bdd,2));

	distance.BGDis=sqrt(pow(gdd,2)+pow(bdd,2));
	distance.RBDis=sqrt(pow(bdd,2)+pow(rdd,2));
	distance.RGBDis=sqrt(pow(gdd,2)+pow(rdd,2)+pow(bdd,2));
	distance.RGDis=sqrt(pow(gdd,2)+pow(rdd,2));
	distance.RDis=rdd;
	distance.GDis=gdd;
	distance.BDis=bdd;
	distance.R=rgbGther[lei].R;
	distance.G=rgbGther[lei].G;
	distance.B=rgbGther[lei].B;

    return distance;

}


void CGatherDlg::OnButton9xianshizhongxin() 
{
	// TODO: Add your control notification handler code here
	DisBiaoZhi=m_Combolei.GetCurSel();
	
    DisTance=CaculateDis(rgb1,0,0,DisBiaoZhi);
	m_r=DisTance.R;
	m_g=DisTance.G;
	m_b=DisTance.B;	
	UpdateData(FALSE);
	
}

void CGatherDlg::WetherMove(int jj,int mmm)
{
		CString str;
//	CString str1;




		if(jj==0&&mmm0!=1)
		{
			str.Format("%d %s  %s    %d    %s",1,"红","第",mmm,"次才移动");
			mmm0=1;
			m_list1.InsertString(jjj,str);
			jjj++;
		}
		if(jj==1&&mmm1!=1)
		{
			str.Format("%d %s  %s    %d    %s",2,"绿","第",mmm,"次才移动");
			mmm1=1;
			m_list1.InsertString(jjj,str);
			jjj++;
		}
		if(jj==2&&mmm2!=1)
		{
			str.Format("%d %s  %s    %d    %s",3,"蓝","第",mmm,"次才移动");
			mmm2=1;
			m_list1.InsertString(jjj,str);
			jjj++;
		}
		if(jj==3&&mmm3!=1)
		{
			str.Format("%d %s  %s    %d    %s",4,"黄","第",mmm,"次才移动");
			mmm3=1;
			m_list1.InsertString(jjj,str);
			jjj++;
		}
		if(jj==4&&mmm4!=1)
		{
			str.Format("%d %s %s    %d    %s",5,"品红","第",mmm,"次才移动");
			mmm4=1;
			m_list1.InsertString(jjj,str);
			jjj++;
		}
		if(jj==5&&mmm5!=1)
		{
			str.Format("%d %s  %s    %d    %s",6,"青","第",mmm,"次才移动");
			mmm5=1;
			m_list1.InsertString(jjj,str);
			jjj++;
		}
		if(jj==6&&mmm6!=1)
		{
			str.Format("%d %s %s    %d    %s",7,"暗紫","第",mmm,"次才移动");
			mmm6=1;
			m_list1.InsertString(jjj,str);
			jjj++;
		}
		if(jj==7&&mmm7!=1)
		{
			str.Format("%d %s %s    %d    %s",8,"暗青","第",mmm,"次才移动");
			mmm7=1;
			m_list1.InsertString(jjj,str);
			jjj++;
		}
		if(jj==8&&mmm8!=1)
		{
			str.Format("%d %s %s    %d    %s",9,"天蓝","第",mmm,"次才移动");
			mmm8=1;
			m_list1.InsertString(jjj,str);
			jjj++;
		}
		if(jj==9&&mmm9!=1)
		{
			str.Format("%d %s  %s    %d    %s",10,"白","第",mmm,"次才移动");
			mmm9=1;
			m_list1.InsertString(jjj,str);
			jjj++;
		}	

}

void CGatherDlg::OnButton10ZiDong() 
{
	// TODO: Add your control notification handler code here
    AotoFindCeter(ClassNum);
	
}

void CGatherDlg::AotoFindCeter(int leishu)
{
	for(i=0;i<leishu;i++)
	{
		rgb[i].R=rdata[0][i+100];
		rgb[i].G=gdata[0][i+100];
		rgb[i].B=bdata[0][i+100];
		rgb1[i].R=rdata[0][i+100];
		rgb1[i].G=gdata[0][i+100];
		rgb1[i].B=bdata[0][i+100];
        //ShowRGB(0, 0, 0, i,2);//循环显示
	}
    
}

⌨️ 快捷键说明

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