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

📄 class designview.cpp

📁 二维几何图形变换的演示
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		
		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 + -