VC++绘制金刚石(MFC)
void CTxx1View::OnDraw(CDC* pDC)
{
	CTxx1Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
 
	//CDC * pDC=GetDC();//设备上下文指针
 
 
 
	typedef struct
	{
		double x;
		double y;
	}zuobiao;
 
 
	zuobiao P[n];
 
	CRect rect;//定义矩形对象
 
	GetClientRect(&rect);//获得客户区矩形的大小
 
 
 
	pDC->SetMapMode (MM_ANISOTROPIC);//自定义坐标系
 
	pDC->SetWindowExt(rect.Width(),rect.Height());//设置窗口比例
 
	pDC->SetViewportExt(rect.Width(),rect.Height());//设置视区比例且y轴向上
 
	pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);//设置客户区中心为坐标原点
 
 
 
	rect.OffsetRect(-rect.Width()/2,-rect.Height()/2);//矩形与客户区重合
 
 
 
	CPen NewPen,*pOldPen;//定义画笔
 
 
 
	NewPen.CreatePen (PS_SOLID,1,RGB(0,0,255));//创建蓝色画笔
 
	pOldPen=pDC->SelectObject(&NewPen);//将蓝色画笔选人设备上下文
 
 
 
	double Alpha,Theta;
 
	Theta=2*PI/n;//为等分角
 
	Alpha=PI/2-Theta;//起始角
 
	//极坐标求值
 
	for(int i=0;i<n;i++)
 
	{
 
		P[i].x=r*cos(i*Theta+Alpha);
	
		P[i].y=r*sin(i*Theta+Alpha);
 
	}
 
//二重循环,连线(P[i]为起点,P[j]为终点)
 
	for(i=0;i<=n-2;i++)
 
	{
 
		for(int j=i+1;j<=n-1;j++)
 
		{
 
			pDC->MoveTo(Round(P[i].x),Round(P[i].y));
 
			pDC->LineTo(Round(P[j].x),Round(P[j].y));
 
		}
 
	}
 
 
 
	pDC->SelectObject(pOldPen);//恢复设备环境中的元画笔
 
	NewPen.DeleteObject (http://www.my516.com);//删除已成自由状态的蓝色画笔
 
	ReleaseDC(pDC);//释放设备指针
 
}
--------------------- 
 
                    
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号