VC++绘制铁路道岔

绘制代码;

void CDaocaView::OnDraw(CDC* pDC)
{
	CDaocaDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here

	COLORREF DaoChaColor= RGB(0,0,0);
	int width = m_rect.Width() ;
	int height = m_rect.Height() ;

	CPen newpen(PS_SOLID,60,DaoChaColor);
	CPen newpen1(PS_SOLID,60,RGB(0,255,255));
	CPen *pOldPen = pDC->SelectObject(&newpen);

     pDC->MoveTo(m_rect.left,(int)(m_rect.top + height*0.5));
	 pDC->LineTo((int)(m_rect.left +width*0.33),(int)(m_rect.top + height*0.5));
    
	 pDC->MoveTo((int)(m_rect.left +width*0.33),(int)(m_rect.top+height*0.5));
	 pDC->LineTo((int)(m_rect.left +width*0.5),(int)(m_rect.top+(height*0.5+width*(sqrt(3))/6)));

	 pDC->MoveTo((int)(m_rect.left +width*0.67),(int)(m_rect.top + height*0.5));
	 pDC->LineTo((int)(m_rect.left +width),m_rect.top+height*0.5);

	m_rect.left=240;
	m_rect.right=440;

	 pDC->MoveTo(m_rect.left,(int)(m_rect.top + height*0.5));
	 pDC->LineTo((int)(m_rect.left +width/3),(int)(m_rect.top + height*0.5));

	 pOldPen = pDC->SelectObject(&newpen1);
	 pDC->MoveTo((int)(m_rect.left +width/3),(int)(m_rect.top+height*0.5));
	 pDC->LineTo((int)(m_rect.left +width*2/3),(int)(m_rect.top+height*0.5));
	 pOldPen = pDC->SelectObject(&newpen);

	 pDC->MoveTo((int)(m_rect.left +width*2/3),(int)(m_rect.top + height*0.5));
	 pDC->LineTo((int)(m_rect.left +width),m_rect.top+height*0.5);

	 m_rect.left=470;
	 m_rect.right=670;
 
	 pDC->MoveTo(m_rect.left,(int)(m_rect.top + height*0.5));
	 pDC->LineTo((int)(m_rect.left +width/3),(int)(m_rect.top + height*0.5));

	 pDC->MoveTo((int)(m_rect.left +width/3),(int)(m_rect.top+height*0.5));
	 pDC->LineTo((int)(m_rect.left +width*0.5),(int)(m_rect.top+(height*0.5-width*(sqrt(3))/6)));

	 pDC->MoveTo((int)(m_rect.left +width*2/3),(int)(m_rect.top + height*0.5));
	 pDC->LineTo((int)(m_rect.left +width),m_rect.top+height*0.5);

	 m_rect.left=700;
	 m_rect.right=900;
 
	 pDC->MoveTo(m_rect.left,(int)(m_rect.top + height*0.5));
	 pDC->LineTo((int)(m_rect.left +width/3),(int)(m_rect.top + height*0.5));

	 pDC->MoveTo((int)(m_rect.left +width/3),(int)(m_rect.top+height*0.5));
	 pDC->LineTo((int)(m_rect.left +width/2),(int)(m_rect.top+(height*0.5+width*(sqrt(3))/6)));

	 pDC->MoveTo((int)(m_rect.left +width*2/3),(int)(m_rect.top + height*0.5));
	 pDC->LineTo((int)(m_rect.left +width),m_rect.top+height*0.5);
       
	pDC->SetBkMode(TRANSPARENT);
	pDC->SelectObject(pOldPen);
}

头文件添加一个成员变量:CRect m_rect;

初始化;

CDaocaView::CDaocaView()
{
	// TODO: add construction code here
	m_rect.left=10;
	m_rect.top=10;
	m_rect.right=210;
	m_rect.bottom=210;
}

包含<math.h>;

绘制效果如下;

    我也不太了解什么是道岔;可能是指的铁路交叉的地方;

猜你喜欢

转载自blog.csdn.net/bcbobo21cn/article/details/115290834