📄 gatherdlg.cpp
字号:
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 + -