本文共 2810 字,大约阅读时间需要 9 分钟。
绘制代码;
void CDaocaView::OnDraw(CDC* pDC){ CDaocaDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // 画法待完成 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(){ // 初始化成员变量 m_rect.left=10; m_rect.top=10; m_rect.right=210; m_rect.bottom=210;}包含<math.h>;
绘制效果如下;
代码采用了几何计算方法绘制图形,主要包括菱形和直线的绘制。通过调整坐标点的位置,画出了具有特定角度的交叉图形。图形绘制采用了透明笔触模式,并通过改变颜色进行区分。绘制完成后,重设了窗口的位置和大小。
关于道岔的问题,这里指的是铁路交叉处的道岔结构。通过代码实现的绘制效果,展示了道岔的基本构造方式及其在不同位置的几何特性。
转载地址:http://kpyy.baihongyu.com/