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

本文共 2760 字,大约阅读时间需要 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/

你可能感兴趣的文章
OpenCV与AI深度学习 | 实战 | OpenCV传统方法实现密集圆形分割与计数(详细步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | OpenCV实现扫描文本矫正应用与实现详解(附源码)
查看>>
OpenCV与AI深度学习 | 实战 | 使用YOLOv8 Pose实现瑜伽姿势识别
查看>>
OpenCV与AI深度学习 | 实战 | 使用YoloV8实例分割识别猪的姿态(含数据集)
查看>>
OpenCV与AI深度学习 | 实战 | 使用姿态估计算法构建简单的健身训练辅助应用程序
查看>>
OpenCV与AI深度学习 | 实战 | 基于YoloV5和Mask RCNN实现汽车表面划痕检测(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 实战 | 文本图片去水印--同时保持文本原始色彩(附源码)
查看>>
OpenCV与AI深度学习 | 实战—使用YOLOv8图像分割实现路面坑洞检测(步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战篇——基于YOLOv8和OpenCV实现车速检测(详细步骤 + 代码)
查看>>
OpenCV与AI深度学习 | 实战|OpenCV实时弯道检测(详细步骤+源码)
查看>>
OpenCV与AI深度学习 | 实践教程|旋转目标检测模型-TensorRT 部署(C++)
查看>>
OpenCV与AI深度学习 | 工业缺陷检测中数据标注需要注意的几个事项
查看>>
OpenCV与AI深度学习 | 干货 | 深度学习模型训练和部署的基本步骤
查看>>
OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
查看>>
OpenCV与AI深度学习 | 深度学习检测小目标常用方法
查看>>
OpenCV与AI深度学习 | 超越YOLOv10/11、RT-DETRv2/3!中科大D-FINE重新定义边界框回归任务
查看>>
OpenCV与AI深度学习 | 高效开源的OCR工具:Surya-OCR介绍与使用
查看>>
Opencv中KNN背景分割器
查看>>