📄 class designview.cpp
字号:
CPen SolidPen(PS_SOLID,3,RGB(255,0,0));//创建红色画笔
pDC->SelectObject(&SolidPen);//将画笔选入设备环境
SetData(Org_Rec,After_Rec,Before_Rec);
pDC->MoveTo(After_Rec[0][0],After_Rec[0][1]);
pDC->LineTo(After_Rec[1][0],After_Rec[1][1]);
}break;
case m_bMultiline ://画原多边形
{
int Before_Rec_Multi[5][3]={{-400,10,1},{300,-200,1},{250,350,1},{50,385,1},{-400,10,1}};
pDC->SelectStockObject(NULL_BRUSH);///////将画刷涂的颜色设为透明,防止前一个图形被覆盖
POINT point_Before[5]={Before_Rec_Multi[0][0],Before_Rec_Multi[0][1],
Before_Rec_Multi[1][0],Before_Rec_Multi[1][1],
Before_Rec_Multi[2][0],Before_Rec_Multi[2][1],
Before_Rec_Multi[3][0],Before_Rec_Multi[3][1],
Before_Rec_Multi[4][0],Before_Rec_Multi[4][1]};
pDC->Polygon(point_Before,5);/////利用MFC类自带的Polygon()画多边形
}break;
case m_bMultiline_Bili: //画多边形比例变换
{
int Org_Rec_Multi[3][3]={{dfData1,0,0},{0,dfData1,0},{0,0,1}};/////只需改这组数组的数据即可,其为二维变换矩阵
int Before_Rec_Multi[5][3]={{-400,10,1},{300,-200,1},{250,350,1},{50,385,1},{-400,10,1}};
int After_Rec_Multi[5][3]={0};
pDC->SelectStockObject(NULL_BRUSH);///////将画刷涂的颜色设为透明,防止覆盖坐标轴
POINT point_Before[5]={Before_Rec_Multi[0][0],Before_Rec_Multi[0][1],
Before_Rec_Multi[1][0],Before_Rec_Multi[1][1],
Before_Rec_Multi[2][0],Before_Rec_Multi[2][1],
Before_Rec_Multi[3][0],Before_Rec_Multi[3][1],
Before_Rec_Multi[4][0],Before_Rec_Multi[4][1]};
pDC->Polygon( point_Before,5);///////画原多边形
CPen SolidPen(PS_SOLID,1,RGB(255,0,0));//创建红色画笔
pDC->SelectObject(&SolidPen);//将画笔选入设备环境
SetData(Org_Rec_Multi,After_Rec_Multi,Before_Rec_Multi);/////调用自定义函数完成矩阵相乘并赋值
pDC->SelectStockObject(NULL_BRUSH);///////将画刷涂的颜色设为透明,防止前一个图形被覆盖
POINT point_After[5]={After_Rec_Multi[0][0],After_Rec_Multi[0][1],
After_Rec_Multi[1][0],After_Rec_Multi[1][1],
After_Rec_Multi[2][0],After_Rec_Multi[2][1],
After_Rec_Multi[3][0],After_Rec_Multi[3][1],
After_Rec_Multi[4][0],After_Rec_Multi[4][1]};
pDC->Polygon(point_After,5);//画多边形比例变换的多边形
}break;
case m_bMultiline_Xduicheng: //画多边形关于X轴对称
{
int Org_Rec_Multi[3][3]={{1,0,0},{0,-1,0},{0,0,1}};
int Before_Rec_Multi[5][3]={{-400,10,1},{300,-200,1},{250,350,1},{50,385,1},{-400,10,1}};
int After_Rec_Multi[5][3]={0};
pDC->SelectStockObject(NULL_BRUSH);
POINT point_Before[5]={Before_Rec_Multi[0][0],Before_Rec_Multi[0][1],
Before_Rec_Multi[1][0],Before_Rec_Multi[1][1],
Before_Rec_Multi[2][0],Before_Rec_Multi[2][1],
Before_Rec_Multi[3][0],Before_Rec_Multi[3][1],
Before_Rec_Multi[4][0],Before_Rec_Multi[4][1]};
pDC->Polygon( point_Before,5);
CPen SolidPen(PS_SOLID,1,RGB(0,0,255));//创建红色画笔
pDC->SelectObject(&SolidPen);//将画笔选入设备环境
SetData(Org_Rec_Multi,After_Rec_Multi,Before_Rec_Multi);
pDC->SelectStockObject(NULL_BRUSH);
POINT point_After[5]={After_Rec_Multi[0][0],After_Rec_Multi[0][1],
After_Rec_Multi[1][0],After_Rec_Multi[1][1],
After_Rec_Multi[2][0],After_Rec_Multi[2][1],
After_Rec_Multi[3][0],After_Rec_Multi[3][1],
After_Rec_Multi[4][0],After_Rec_Multi[4][1]};
pDC->Polygon(point_After,5);
} break;
case m_bMultiline_Yduicheng://画多边形关于Y轴对称
{
int Org_Rec_Multi[3][3]={{-1,0,0},{0,1,0},{0,0,1}};
int Before_Rec_Multi[5][3]={{-400,10,1},{300,-200,1},{250,350,1},{50,385,1},{-400,10,1}};
int After_Rec_Multi[5][3]={0};
pDC->SelectStockObject(NULL_BRUSH);
POINT point_Before[5]={Before_Rec_Multi[0][0],Before_Rec_Multi[0][1],
Before_Rec_Multi[1][0],Before_Rec_Multi[1][1],
Before_Rec_Multi[2][0],Before_Rec_Multi[2][1],
Before_Rec_Multi[3][0],Before_Rec_Multi[3][1],
Before_Rec_Multi[4][0],Before_Rec_Multi[4][1]};
pDC->Polygon( point_Before,5);
pDC->SelectStockObject(NULL_BRUSH);
CPen SolidPen(PS_SOLID,1,RGB(0,255,0));//创建绿色画笔
pDC->SelectObject(&SolidPen);//将画笔选入设备环境
SetData(Org_Rec_Multi,After_Rec_Multi,Before_Rec_Multi);
pDC->SelectStockObject(NULL_BRUSH);
POINT point_After[5]={After_Rec_Multi[0][0],After_Rec_Multi[0][1],
After_Rec_Multi[1][0],After_Rec_Multi[1][1],
After_Rec_Multi[2][0],After_Rec_Multi[2][1],
After_Rec_Multi[3][0],After_Rec_Multi[3][1],
After_Rec_Multi[4][0],After_Rec_Multi[4][1]};
pDC->SelectStockObject(NULL_BRUSH);
pDC->Polygon(point_After,5);
}break;
case m_bMultiline_Orgduicheng://画多边形关于原点对称
{
int Org_Rec_Multi[3][3]={{-1,0,0},{0,-1,0},{0,0,1}};
int Before_Rec_Multi[5][3]={{-400,10,1},{300,-200,1},{250,350,1},{50,385,1},{-400,10,1}};
int After_Rec_Multi[5][3]={0};
pDC->SelectStockObject(NULL_BRUSH);
POINT point_Before[5]={Before_Rec_Multi[0][0],Before_Rec_Multi[0][1],
Before_Rec_Multi[1][0],Before_Rec_Multi[1][1],
Before_Rec_Multi[2][0],Before_Rec_Multi[2][1],
Before_Rec_Multi[3][0],Before_Rec_Multi[3][1],
Before_Rec_Multi[4][0],Before_Rec_Multi[4][1]};
pDC->Polygon( point_Before,5);
CPen SolidPen(PS_SOLID,1,RGB(250,150,255));//创建其他颜色画笔
pDC->SelectObject(&SolidPen);//将画笔选入设备环境
SetData(Org_Rec_Multi,After_Rec_Multi,Before_Rec_Multi);
pDC->SelectStockObject(NULL_BRUSH);
POINT point_After[5]={After_Rec_Multi[0][0],After_Rec_Multi[0][1],
After_Rec_Multi[1][0],After_Rec_Multi[1][1],
After_Rec_Multi[2][0],After_Rec_Multi[2][1],
After_Rec_Multi[3][0],After_Rec_Multi[3][1],
After_Rec_Multi[4][0],After_Rec_Multi[4][1]};
pDC->Polygon(point_After,5);
}break;
case m_bMultiline_Cuoqie://画多边形错切变换
{
int Org_Rec_Multi[3][3]={{1,dfData2,0},{dfData1,1,0},{0,0,1}};
int Before_Rec_Multi[5][3]={{-400,10,1},{300,-200,1},{250,350,1},{50,385,1},{-400,10,1}};
int After_Rec_Multi[5][3]={0};
pDC->SelectStockObject(NULL_BRUSH);
POINT point_Before[5]={Before_Rec_Multi[0][0],Before_Rec_Multi[0][1],
Before_Rec_Multi[1][0],Before_Rec_Multi[1][1],
Before_Rec_Multi[2][0],Before_Rec_Multi[2][1],
Before_Rec_Multi[3][0],Before_Rec_Multi[3][1],
Before_Rec_Multi[4][0],Before_Rec_Multi[4][1]};
pDC->Polygon( point_Before,5);
CPen SolidPen(PS_SOLID,1,RGB(0,255,255));////创建其他颜色画笔
pDC->SelectObject(&SolidPen);//将画笔选入设备环境
SetData(Org_Rec_Multi,After_Rec_Multi,Before_Rec_Multi);
pDC->SelectStockObject(NULL_BRUSH);
POINT point_After[5]={After_Rec_Multi[0][0],After_Rec_Multi[0][1],
After_Rec_Multi[1][0],After_Rec_Multi[1][1],
After_Rec_Multi[2][0],After_Rec_Multi[2][1],
After_Rec_Multi[3][0],After_Rec_Multi[3][1],
After_Rec_Multi[4][0],After_Rec_Multi[4][1]};
pDC->Polygon(point_After,5);
}break;
case m_bMultiline_Xuanzhuang://画多边形旋转变换
{
double Org_Rec_Multi[3][3]={{cos(dfData1*PI/180),sin(dfData1*PI/180),0},{(-sin(dfData1*PI/180)),cos(dfData1*PI/180),0},{0,0,1}};
int Before_Rec_Multi[5][3]={{-400,10,1},{300,-200,1},{250,350,1},{50,385,1},{-400,10,1}};
double After_Rec_Multi[5][3]={0};
pDC->SelectStockObject(NULL_BRUSH);
POINT point_Before[5]={Before_Rec_Multi[0][0],Before_Rec_Multi[0][1],
Before_Rec_Multi[1][0],Before_Rec_Multi[1][1],
Before_Rec_Multi[2][0],Before_Rec_Multi[2][1],
Before_Rec_Multi[3][0],Before_Rec_Multi[3][1],
Before_Rec_Multi[4][0],Before_Rec_Multi[4][1]};
pDC->Polygon( point_Before,5);
CPen SolidPen(PS_SOLID,1,RGB(100,200,0));////创建其他颜色画笔
pDC->SelectObject(&SolidPen);//将画笔选入设备环境
pDC->SelectStockObject(NULL_BRUSH);
for(int i=0;i<=5;i++)
for(int j=0;j<=2;j++)
{
for(int k=0;k<=2;k++)
After_Rec_Multi[i][j]+=Before_Rec_Multi[i][k]*Org_Rec_Multi[k][j];
}
POINT point_After[5]={(int)After_Rec_Multi[0][0],(int)After_Rec_Multi[0][1],
(int)After_Rec_Multi[1][0],(int)After_Rec_Multi[1][1],
(int)After_Rec_Multi[2][0],(int)After_Rec_Multi[2][1],
(int)After_Rec_Multi[3][0],(int)After_Rec_Multi[3][1],
(int)After_Rec_Multi[4][0],(int)After_Rec_Multi[4][1]};
pDC->Polygon(point_After,5);
}break;
case m_bMultiline_Pingyi: //画多边形平移变换
{
int Org_Rec_Multi[3][3]={{1,0,0},{0,1,0},{dfData1,dfData2,1}};
int Before_Rec_Multi[5][3]={{-400,10,1},{300,-200,1},{250,350,1},{50,385,1},{-400,10,1}};
int After_Rec_Multi[5][3]={0};
pDC->SelectStockObject(NULL_BRUSH);
POINT point_Before[5]={Before_Rec_Multi[0][0],Before_Rec_Multi[0][1],
Before_Rec_Multi[1][0],Before_Rec_Multi[1][1],
Before_Rec_Multi[2][0],Before_Rec_Multi[2][1],
Before_Rec_Multi[3][0],Before_Rec_Multi[3][1],
Before_Rec_Multi[4][0],Before_Rec_Multi[4][1]};
pDC->Polygon(point_Before,5);
CPen SolidPen(PS_SOLID,2,RGB(255,0,255));//////创建其他颜色画笔
pDC->SelectObject(&SolidPen);//将画笔选入设备环境
SetData(Org_Rec_Multi,After_Rec_Multi,Before_Rec_Multi);
pDC->SelectStockObject(NULL_BRUSH);
POINT point_After[5]={After_Rec_Multi[0][0],After_Rec_Multi[0][1],
After_Rec_Multi[1][0],After_Rec_Multi[1][1],
After_Rec_Multi[2][0],After_Rec_Multi[2][1],
After_Rec_Multi[3][0],After_Rec_Multi[3][1],
After_Rec_Multi[4][0],After_Rec_Multi[4][1]};
pDC->Polygon(point_After,5);
}break;
case m_bMultiline_fuhe://画多边形复合变换
{
double Org_Rec_Multi[3][3]={{dfData1*cos(dfData3*PI/180),sin(dfData3*PI/180),0},{-dfData1*sin(dfData3*PI/180),cos(dfData3*PI/180),0},{dfData2,0,1}};
int Before_Rec_Multi[5][3]={{-400,10,1},{300,-200,1},{250,350,1},{50,385,1},{-400,10,1}};
double After_Rec_Multi[5][3]={0};
pDC->SelectStockObject(NULL_BRUSH);
POINT point_Before[5]={Before_Rec_Multi[0][0],Before_Rec_Multi[0][1],
Before_Rec_Multi[1][0],Before_Rec_Multi[1][1],
Before_Rec_Multi[2][0],Before_Rec_Multi[2][1],
Before_Rec_Multi[3][0],Before_Rec_Multi[3][1],
Before_Rec_Multi[4][0],Before_Rec_Multi[4][1]};
pDC->Polygon( point_Before,5);
CPen SolidPen(PS_SOLID,1,RGB(200,100,100)); ////创建其他颜色画笔
pDC->SelectObject(&SolidPen); //将画笔选入设备环境
for(int i=0;i<=5;i++)
for(int j=0;j<=2;j++)
{
for(int k=0;k<=2;k++)
After_Rec_Multi[i][j]+=Before_Rec_Multi[i][k]*Org_Rec_Multi[k][j];
} ////////////////利用循环进行矩阵相乘并赋值
pDC->SelectStockObject(NULL_BRUSH);
POINT point_After[5]={(int)After_Rec_Multi[0][0],(int)After_Rec_Multi[0][1],
(int)After_Rec_Multi[1][0],(int)After_Rec_Multi[1][1],
(int)After_Rec_Multi[2][0],(int)After_Rec_Multi[2][1],
(int)After_Rec_Multi[3][0],(int)After_Rec_Multi[3][1],
(int)After_Rec_Multi[4][0],(int)After_Rec_Multi[4][1]};
pDC->Polygon(point_After,5);
}break;
break;
} //switch函数 最后的括号
// TODO: Add your message handler code here and/or call defaul
} //OnDraw函数最后的括号
void CClassDesignView::OnPoint()
{
CurrenDraw=m_bPoint; /////////响应函数值赋给sw
// TODO: Add your command handler code hereitch(CurrenDraw)
Invalidate(); /////////刷新并回到重绘函数
}
void CClassDesignView::OnLine()
{
CurrenDraw=m_bLine;
Invalidate();
// TODO: Add your command handler code here
}
void CClassDesignView::OnMultiline()
{
CurrenDraw=m_bMultiline;
Invalidate();
// TODO: Add your command handler code here
}
/////////////////////////////////////////////////////////////////////////////
// CClassDesignView printing
BOOL CClassDesignView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CClassDesignView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CClassDesignView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CClassDesignView diagnostics
#ifdef _DEBUG
void CClassDesignView::AssertValid() const
{
CView::AssertValid();
}
void CClassDesignView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CClassDesignDoc* CClassDesignView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CClassDesignDoc)));
return (CClassDesignDoc*)m_pDocument;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -