c#

位置:IT落伍者 >> c# >> 浏览文章

.NET示波器控件范例代码


发布日期:2018年11月17日
 
.NET示波器控件范例代码

同事负责的项目中会扫描硬件中的某个东西是否存在因此老板希望对这些扫描结果能有个图像画的介面可以查看

因此做了个小工具可读取同事提供的数据并将其视觉化显示

那显示扫描结果最容易的就是示波器了但第三方控件的示波器功能又太繁琐最终就决定自己做个简单的

反正对我来说用GDI来绘制跟花时间去研究没用过的第三方控件时间也不会差太多

思路

首先是上面那块横线通常表示高值

第二块是下面那块横线表示低直

第三部分就是连结垂直的线

高度的运算我是用最简单的方式将一个UC的高度直接除当做中心y座标

表示高点的则是中心y座标往上高度/的位置

表示低点的则是中心y座标往下高度/的位置

示波器的部份则是先把头尾的线去掉然后再将数据拆分成两个部分

一个部分是高点要绘制的座标另一部分是低点要绘制的座标

有了这两个座标就同时可以绘制垂直的线了

比例上则是使用示波器的值以及这个控件的宽度做比例上的调整

代码

[csharp]

int max = m_mappingDatas[m_mappingDatasCount ];

m_Ratio = (max + m_mappingDatas[]*) / m_width;

// Draw Wafer data

for (int i = j = ; i < m_mappingDatasCount; i+= j++)

{

float xStart = m_mappingDatas[i ];

float xEnd = m_mappingDatas[i];

graphicsDrawLine(pen xStart / m_Ratio m_yPositionOfWafer

xEnd / m_Ratio m_yPositionOfWafer)

graphicsDrawString((j+ToString() ControlDefaultFont brush

(xStart / m_Ratio) m_yPositionOfNoWafer +

}

// Draw No Wafer data

graphicsDrawLine(pen m_yPositionOfNoWafer

m_mappingDatas[] / m_Ratio m_yPositionOfNoWafer)

for (int i = ; i < m_mappingDatasCount; i +=

{

float xStart = m_mappingDatas[i ];

float xEnd = m_mappingDatas[i];

graphicsDrawLine(pen xStart / m_Ratio m_yPositionOfNoWafer

xEnd / m_Ratio m_yPositionOfNoWafer)

}

graphicsDrawLine(pen m_mappingDatas[m_mappingDatasCount ] / m_Ratio m_yPositionOfNoWafer

m_width m_yPositionOfNoWafer)

// Draw vertical line

for (int i = ; i < m_mappingDatasCount; i +=

{

float X = m_mappingDatas[i ];

float X = m_mappingDatas[i];

graphicsDrawLine(pen X / m_Ratio m_yPositionOfWafer

X / m_Ratio m_yPositionOfNoWafer)

graphicsDrawLine(pen X / m_Ratio m_yPositionOfWafer

X / m_Ratio m_yPositionOfNoWafer)

}

在我的代码中是要扫描半导体晶圆所以高点是表示有晶圆低点则是表示没有晶圆

               

上一篇:解读.NET Framework中的COM+与MTS

下一篇:C# 委托