📄 drawview.cpp
字号:
K=10;
//Line0(pDC,x1,y1,x2,y2,1,RGB(0,255,0));
x3=x1+(x2-x1)*K/R;
y3=y1+(y2-y1)*K/R;
x4=(x1+x3)/2+0.866*(y3-y1);
y4=(y1+y3)/2-0.866*(x3-x1);
//以下为画圆弧程序:
for(double A=0;A<360;A=A+T)
{ double XX=X0+R*cos(3.14*A/180);
double YY=Y0+R*sin(3.14*A/180);
if((XX-x)*(XX-x)+(YY-y)*(YY-y)<0.268*R*R)
{pDC->SetPixel(XX,YY,RGB(255,0,0));
m_dcMetaFile.SetPixel(XX,YY,RGB(255,0,0));} }
Line0(pDC,x1,y1,x3,y3,1,RGB(255,0,0));
Line0(pDC,x1,y1,x4,y4,1,RGB(255,0,0));
pDC->TextOut(x-20,y,wenzhi);
m_dcMetaFile.TextOut(x-20,y,wenzhi);
}
void CdrawView::JIANTOU1(CDC* pDC,int x1,int y1,int wid,COLORREF sicol)
//画箭头1,颜色,线宽,矩形的左上点坐标;
{ int x2,y2;
x2=x1+104;
y2=y1+15;
Line0(pDC,x2,y2,x2+100,y2,wid,sicol);
myyuan(pDC,x2+50,y2,7,0);
Line0(pDC,x2+100,y2,x2+90,y2-3,wid,sicol);
Line0(pDC,x2+100,y2,x2+90,y2+3,wid,sicol);
}
void CdrawView::JIANTOU2(CDC* pDC,int x1,int y1,int wid,COLORREF sicol)
//画箭头2,颜色,线宽,矩形的左上点坐标;
{ int x2,y2,x3,y3,y4;
x2=x1+104;
y2=y1+15;
x3=x2+50;
y3=y2+100;
y4=y2-100;
Line0(pDC,x2,y2,x2+50,y2,wid,sicol);
Line0(pDC,x2+50,y2,x2+50,y4,wid,sicol);
Line0(pDC,x2+50,y4,x2+100,y4,wid,sicol);
Line0(pDC,x2+100,y4,x2+90,y4-3,wid,sicol);
Line0(pDC,x2+100,y4,x2+90,y4+3,wid,sicol);
Line0(pDC,x2+50,y2,x3,y3,wid,sicol);
Line0(pDC,x3,y3,x3+50,y3,wid,sicol);
Line0(pDC,x3+50,y3,x3+40,y3-3,wid,sicol);
Line0(pDC,x3+50,y3,x3+40,y3+3,wid,sicol);
myyuan(pDC,x2+50,y2,7,0);
}
void CdrawView::JIANTOU3(CDC* pDC,int x1,int y1,int wid,COLORREF sicol)
{ int x2,y2,x3,y3,x4,y4;
x2=x1+104;
y2=y1+15;
x3=x2+50;
y3=y2+100;
x4=x2+50;
y4=y2-100;
Line0(pDC,x2,y2,x2+100,y2,wid,sicol);
Line0(pDC,x2+100,y2,x2+90,y2-3,wid,sicol);
Line0(pDC,x2+100,y2,x2+90,y2+3,wid,sicol);
Line0(pDC,x2+50,y2,x3,y3,wid,sicol);
Line0(pDC,x3,y3,x3+50,y3,wid,sicol);
Line0(pDC,x3+50,y3,x3+40,y3-3,wid,sicol);
Line0(pDC,x3+50,y3,x3+40,y3+3,wid,sicol);
Line0(pDC,x2+50,y2,x4,y4,wid,sicol);
Line0(pDC,x4,y4,x4+50,y4,wid,sicol);
Line0(pDC,x4+50,y4,x4+40,y4-3,wid,sicol);
Line0(pDC,x4+50,y4,x4+40,y4+3,wid,sicol);
myyuan(pDC,x2+50,y2,7,0);
}
void CdrawView::JIANTOU4(CDC* pDC,int x1,int y1,int wid,COLORREF sicol)
{ int x2,y2,x3,y3,x4,y4,x5,y5,y6;
x2=x1+104;
y2=y1+15;
x3=x2+50;
y3=y2+99;
x4=x2+50;
y4=y2-99;
x5=x2+50;
y5=y2+33;
y6=y2-33;
Line0(pDC,x2,y2,x2+50,y2,wid,sicol);
Line0(pDC,x2+50,y6,x2+100,y6,wid,sicol);
Line0(pDC,x2+100,y6,x2+90,y6-3,wid,sicol);
Line0(pDC,x2+100,y6,x2+90,y6+3,wid,sicol);
Line0(pDC,x2+50,y2,x3,y3,wid,sicol);
Line0(pDC,x3,y3,x3+50,y3,wid,sicol);
Line0(pDC,x3+50,y3,x3+40,y3-3,wid,sicol);
Line0(pDC,x3+50,y3,x3+40,y3+3,wid,sicol);
Line0(pDC,x2+50,y2,x4,y4,wid,sicol);
Line0(pDC,x4,y4,x4+50,y4,wid,sicol);
Line0(pDC,x4+50,y4,x4+40,y4-3,wid,sicol);
Line0(pDC,x4+50,y4,x4+40,y4+3,wid,sicol);
Line0(pDC,x2+50,y2,x5,y5,wid,sicol);
Line0(pDC,x5,y5,x5+50,y5,wid,sicol);
Line0(pDC,x5+50,y5,x5+40,y5-3,wid,sicol);
Line0(pDC,x5+50,y5,x5+40,y5+3,wid,sicol);
myyuan(pDC,x2+50,y2,7,0);
}
//画矩形填充
void CdrawView::FillRect0(CDC* pDC,COLORREF col,CPoint point,int chd,int kd)
//刷子颜色,矩形长宽
{CBrush newBrush(col);
CBrush *poldBrush;
poldBrush=pDC->SelectObject(&newBrush);
pDC->FillRect(CRect(point.x,point.y,point.x+chd,point.y+kd),&newBrush);//画一没边线的矩形
m_dcMetaFile.FillRect(CRect(point.x,point.y,point.x+chd,point.y+kd),&newBrush);
pDC->SelectObject(poldBrush);
m_dcMetaFile.SelectObject(poldBrush);
newBrush.DeleteObject();//释放并清除内存中的新刷子
}
//以下为添加的响应函数:
void CdrawView::OnButton001()
{ CDC* pDC;
pDC=GetDC();
pDC->SetMapMode(MM_TEXT);
pDC->SetWindowOrg(hi,vi);
if(K==1){FANGKUANG(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
BIAOZHI2=2;
J=1;
K=0;
HUATU(pDC);}
else{}
}
void CdrawView::OnButton002()
{ CDC* pDC;
pDC=GetDC();
pDC->SetMapMode(MM_TEXT);
pDC->SetWindowOrg(hi,vi);
if(K==1){FANGKUANG(pDC,point1[M].x,point1[M].y,1,RGB(0,160,0));
BIAOZHI2=2;
J=2;
K=0;
N=M;
MessageBox("Please select another function!");
}
else{}
}
void CdrawView::OnButton003()
{
// TODO: Add your command handler code here
CDC* pDC;
pDC=GetDC();
pDC->SetMapMode(MM_TEXT);
pDC->SetWindowOrg(hi,vi);
if(K==1){FANGKUANG(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
BIAOZHI2=2;
J=3;
K=0;
HUATU(pDC);}
else{}
}
void CdrawView::OnButton004()
{
// TODO: Add your command handler code here
CDC* pDC;
pDC=GetDC();
pDC->SetMapMode(MM_TEXT);
pDC->SetWindowOrg(hi,vi);
if(K==1){FANGKUANG(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
BIAOZHI2=2;
J=4;
K=0;
HUATU(pDC);}
else{}
}
void CdrawView::OnButton005()
{
// TODO: Add your command handler code here
CDC* pDC;
pDC=GetDC();
pDC->SetMapMode(MM_TEXT);
pDC->SetWindowOrg(hi,vi);
if(K==1){FANGKUANG(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
BIAOZHI2=2;
J=5;
K=0;
HUATU(pDC);}
else{}
}
void CdrawView::OnButton006()
{
// TODO: Add your command handler code here
CDC* pDC;
pDC=GetDC();
pDC->SetMapMode(MM_TEXT);
pDC->SetWindowOrg(hi,vi);
if(K==1){FANGKUANG(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
BIAOZHI2=2;
J=6;
K=0;
HUATU(pDC);}
else{}
}
void CdrawView::OnButton007()
{
// TODO: Add your command handler code here
CDC* pDC;
pDC=GetDC();
pDC->SetMapMode(MM_TEXT);
pDC->SetWindowOrg(hi,vi);
if(K==1){FANGKUANG(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
BIAOZHI2=2;
J=7;
K=0;
HUATU(pDC);}
else{}
}
void CdrawView::OnButton008()
{ CDC* pDC;
pDC=GetDC();
pDC->SetMapMode(MM_TEXT);
pDC->SetWindowOrg(hi,vi);
if(K==1){FANGKUANG(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
BIAOZHI2=2;
J=8;
K=0;
HUATU(pDC);
}
else {}
}
void CdrawView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
int i;
CDC* pDC;
pDC=GetDC();
pDC->SetMapMode(MM_TEXT);
pDC->SetWindowOrg(hi,vi);
//T=0;
if(GUANXI==1&&BIAOZHI2==2){
for(i=0;i<100;i++)
{if((point.x+hi)>point1[i].x&&(point.x+hi)<point1[i].x+100&&(point.y+vi)>point1[i].y&&(point.y+vi)<point1[i].y+30){
FANGKUANG(pDC,point1[i].x,point1[i].y,1,RGB(255,0,0));
BIAOZHI2=1;
M=i;
K=1;
T=1;
if(J==2){Q=9;
FANGKUANG(pDC,point1[i].x,point1[i].y,1,RGB(0,160,0));}
else{}
HUATU(pDC);}
}}
else if(GUANXI==2&&BIAOZHI==2){
for(i=0;i<100;i++)
{if(point.x+hi>point2[i].x&&point.x+hi<point2[i].x+100&&point.y+vi>point2[i].y&&point.y+vi<point2[i].y+30)
{if(J==9){Q=10;}
FANGKUANG(pDC,point2[i].x,point2[i].y,1,RGB(0,0,160));
BIAOZHI=1;
if(KAKA==2){MessageBox("Please select a relationship!");}
KAKA=2;
//FANGKUANG(pDC,point2[i].x,point2[i].y,1,RGB(255,0,0));
M=i;
K=1;
T=1;
HUATU(pDC);}
else {}
}
}
else if(T!=1){
MessageBox("Please select a function!");
}
else{}
CScrollView::OnLButtonDown(nFlags, point);
}
void CdrawView::OnMouseMove(UINT nFlags, CPoint point)
{
CScrollView::OnMouseMove(nFlags, point);
}
void CdrawView::HUATU(CDC* pDC)
{ //CDC* pDC;
//pDC=GetDC();
pDC->SetMapMode(MM_TEXT);
pDC->SetWindowOrg(hi,vi);
if(jj==1) {jj=0;}
if(T!=1){ //FillRect0(pDC,RGB(255,255,255),(0,0),2000,2000);
//以下为清空内存
/* point1[0].x=40;
point1[0].y=40;//此数组为存储可用来进化的方框数据
point2[0].x=40;//此数组为存储所有方框数据
point2[0].y=40;
for(int i=0;i<50;i++)
{point1[i].x=point33[i].x;
point1[i].y=point33[i].y;
point2[i].x=point33[i].x;
point2[i].y=point33[i].y;}*/
//以上为清空内存
//FANGKUANG(pDC,40,40,1,RGB(0,0,0));
}
if(J==1||J==3||J==4||J==5||J==6||J==7){
BIAOZHI2=2;
JIANTOU1(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
if(J==1){ pDC->TextOut(point1[M].x+110,point2[M].y-10,"Generalization");
m_dcMetaFile.TextOut(point1[M].x+110,point2[M].y-10,"Generalization");}
if(J==3){ pDC->TextOut(point1[M].x+120,point2[M].y-10,"Specification");
m_dcMetaFile.TextOut(point1[M].x+120,point2[M].y-10,"Specification");}
if(J==4){ pDC->TextOut(point1[M].x+120,point2[M].y-10,"Abstraction");
m_dcMetaFile.TextOut(point1[M].x+120,point2[M].y-10,"Abstraction");}
if(J==5){ pDC->TextOut(point1[M].x+120,point2[M].y-10,"Detailing");
m_dcMetaFile.TextOut(point1[M].x+120,point2[M].y-10,"Detailing");}
if(J==6){ pDC->TextOut(point1[M].x+120,point2[M].y-10,"Variation");
m_dcMetaFile.TextOut(point1[M].x+120,point2[M].y-10,"Variation");}
if(J==7){ pDC->TextOut(point1[M].x+130,point2[M].y-10,"Limiting");
m_dcMetaFile.TextOut(point1[M].x+130,point2[M].y-10,"Limiting");}
FANGKUANG(pDC,point1[M].x+210,point1[M].y,1,RGB(0,0,0));
I=I+1;
point1[I].x=point1[M].x+210;
point1[I].y=point1[M].y;
//以下为存储方框数据
point2[I].x=point1[M].x+210;
point2[I].y=point1[M].y;
//以上为存储方框数据
point1[M].x=0;
point1[M].y=0;
J=0;
}
if(J==8){
amountdlg dlg;
dlg.DoModal();
if(dlg.m_number==2){
JIANTOU2(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
pDC->TextOut(point1[M].x+110,point2[M].y-10,"Decomposition");
FANGKUANG(pDC,point1[M].x+210,point1[M].y-100,1,RGB(0,0,0));
FANGKUANG(pDC,point1[M].x+210,point1[M].y+100,1,RGB(0,0,0));
I=I+2;
point1[I-1].x=point1[M].x+210;
point1[I-1].y=point1[M].y-100;
point1[I].x=point1[M].x+210;
point1[I].y=point1[M].y+100;
//以下为存储方框数据
point2[I-1].x=point1[M].x+210;
point2[I-1].y=point1[M].y-100;
point2[I].x=point1[M].x+210;
point2[I].y=point1[M].y+100;
//以上为存储方框数据
point1[M].x=0;
point1[M].y=0;}
else if(dlg.m_number==3){
JIANTOU3(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
pDC->TextOut(point1[M].x+110,point2[M].y-10,"Decomposition");
FANGKUANG(pDC,point1[M].x+210,point1[M].y,1,RGB(0,0,0));
FANGKUANG(pDC,point1[M].x+210,point1[M].y+100,1,RGB(0,0,0));
FANGKUANG(pDC,point1[M].x+210,point1[M].y-100,1,RGB(0,0,0));
I=I+3;
point1[I-2].x=point1[M].x+210;
point1[I-2].y=point1[M].y;
point1[I-1].x=point1[M].x+210;
point1[I-1].y=point1[M].y+100;
point1[I].x=point1[M].x+210;
point1[I].y=point1[M].y-100;
//以下为存储方框数据
point2[I-2].x=point1[M].x+210;
point2[I-2].y=point1[M].y;
point2[I-1].x=point1[M].x+210;
point2[I-1].y=point1[M].y+100;
point2[I].x=point1[M].x+210;
point2[I].y=point1[M].y-100;
//以上为存储方框数据
point1[M].x=0;
point1[M].y=0;}
else if(dlg.m_number==4){
JIANTOU4(pDC,point1[M].x,point1[M].y,1,RGB(0,0,0));
pDC->TextOut(point1[M].x+110,point2[M].y-10,"Decomposition");
FANGKUANG(pDC,point1[M].x+210,point1[M].y-33,1,RGB(0,0,0));
FANGKUANG(pDC,point1[M].x+210,point1[M].y+99,1,RGB(0,0,0));
FANGKUANG(pDC,point1[M].x+210,point1[M].y-99,1,RGB(0,0,0));
FANGKUANG(pDC,point1[M].x+210,point1[M].y+33,1,RGB(0,0,0));
I=I+4;
point1[I-3].x=point1[M].x+210;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -