博客
关于我
VC++绘制铁路道岔
阅读量:108 次
发布时间:2019-02-26

本文共 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/

你可能感兴趣的文章
NodeJS 的环境变量: 开发环境vs生产环境
查看>>
nodejs 读取xlsx文件内容
查看>>
nodejs 运行CMD命令
查看>>
Nodejs+Express+Mysql实现简单用户管理增删改查
查看>>
nodejs+nginx获取真实ip
查看>>
nodejs-mime类型
查看>>
NodeJs——(11)控制权转移next
查看>>
NodeJS、NPM安装配置步骤(windows版本)
查看>>
NodeJS、NPM安装配置步骤(windows版本)
查看>>
nodejs下的express安装
查看>>
nodejs与javascript中的aes加密
查看>>
nodejs中Express 路由统一设置缓存的小技巧
查看>>
nodejs中express的使用
查看>>
Nodejs中搭建一个静态Web服务器,通过读取文件获取响应类型
查看>>
Nodejs中的fs模块的使用
查看>>
NodeJS使用淘宝npm镜像站的各种姿势
查看>>
NodeJs入门知识
查看>>
nodejs包管理工具对比:npm、Yarn、cnpm、npx
查看>>
NodeJs单元测试之 API性能测试
查看>>
nodejs图片转换字节保存
查看>>