一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - .NET示波器控件的實例代碼分析

.NET示波器控件的實例代碼分析

2019-11-08 12:40asp.net教程網(wǎng) ASP.NET教程

本篇文章是對.NET示波器控件進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

緣起
同事負(fù)責(zé)的項目中,會掃描硬件中的某個東西是否存在,因此老板希望對這些掃描結(jié)果,能有個圖像畫的介面可以查看
因此做了個小工具,可讀取同事提供的數(shù)據(jù),并將其視覺化顯示
那顯示掃描結(jié)果最容易的就是示波器了,但第三方控件的示波器功能又太繁瑣,最終就決定自己做個簡單的
反正對我來說用GDI來繪制,跟花時間去研究沒用過的第三方控件,時間也不會差太多

思路

.NET示波器控件的實例代碼分析

如圖所示,示波器其實就是這樣簡單的圖
整體思路其實很單純,就把一個示波器分成三個部分來繪制.
首先是上面那塊橫線,通常表示高值
第二塊是下面那塊橫線,表示低直
第三部分就是連結(jié)垂直的線
高度的運算,我是用最簡單的方式,將一個UC的高度直接除2,當(dāng)做中心y座標(biāo)
表示高點的則是中心y座標(biāo)往上,高度/5的位置
表示低點的則是中心y座標(biāo)往下,高度/5的位置
示波器的部份,則是先把頭尾的線去掉,然后再將數(shù)據(jù)拆分成兩個部分
一個部分是高點要繪制的座標(biāo),另一部分是低點要繪制的座標(biāo)
有了這兩個座標(biāo),就同時可以繪制垂直的線了
比例上則是使用示波器的值,以及這個控件的寬度做比例上的調(diào)整
代碼

復(fù)制代碼代碼如下:

int max = m_mappingDatas[m_mappingDatas.Count - 1];
m_Ratio = (max + m_mappingDatas[0]*2) / m_width;
// Draw Wafer data
for (int i = 1, j = 0; i < m_mappingDatas.Count; i+=2 ,j++)
{
    float xStart = m_mappingDatas[i - 1];
    float xEnd = m_mappingDatas[i];
    graphics.DrawLine(pen, xStart / m_Ratio, m_yPositionOfWafer,
        xEnd / m_Ratio, m_yPositionOfWafer);
    graphics.DrawString((j+1).ToString(), Control.DefaultFont, brush,
        (xStart / m_Ratio) - 2, m_yPositionOfNoWafer + 1);
}
// Draw No Wafer data
graphics.DrawLine(pen, 0, m_yPositionOfNoWafer,
        m_mappingDatas[0] / m_Ratio, m_yPositionOfNoWafer);
for (int i = 2; i < m_mappingDatas.Count; i += 2)
{
    float xStart = m_mappingDatas[i - 1];
    float xEnd = m_mappingDatas[i];
    graphics.DrawLine(pen, xStart / m_Ratio, m_yPositionOfNoWafer,
        xEnd / m_Ratio, m_yPositionOfNoWafer);
}
graphics.DrawLine(pen, m_mappingDatas[m_mappingDatas.Count - 1] / m_Ratio, m_yPositionOfNoWafer,
        m_width, m_yPositionOfNoWafer);
// Draw vertical line
for (int i = 1; i < m_mappingDatas.Count; i += 2)
{
    float X1 = m_mappingDatas[i - 1];
    float X2 = m_mappingDatas[i];
    graphics.DrawLine(pen, X1 / m_Ratio, m_yPositionOfWafer,
        X1 / m_Ratio, m_yPositionOfNoWafer);
    graphics.DrawLine(pen, X2 / m_Ratio, m_yPositionOfWafer,
        X2 / m_Ratio, m_yPositionOfNoWafer);
}


在我的代碼中,是要掃描半導(dǎo)體晶圓,所以高點是表示有晶圓,低點則是表示沒有晶圓

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久无码AV亚洲精品色午夜麻豆 | 国产成人在线视频 | 韩国三级大全 | 国产a一级毛片爽爽影院 | 91麻豆国产福利精品 | 性欧美sexovideotv | 春意影院午夜爽爽爽免费 | 99久久精品免费看国产一区二区 | 美女被绑着吸下部的故事 | 狠狠婷婷综合缴情亚洲 | 成人观看免费观看视频 | 国产aⅴ一区二区三区 | 欧美久在线观看在线观看 | www一区二区 | 校园刺激全黄H全肉细节文 校草让我脱了内裤给全班看 | 日韩免费在线视频观看 | 好吊日在线 | 久久亚洲一级α片 | 四虎网址大全 | 亚洲AV中文字幕无码久久 | 美女黄金大片视频免费看 | 天天干夜夜噜 | 日韩日b视频 | 日韩欧美三级视频 | 国产亚洲欧美日韩俺去了 | 久久精品视在线观看2 | 九九九九视频 | 欧美1级 | 超h高h肉h文武侠 | 国产午夜免费不卡精品理论片 | 奇米网7777| 欧美精品一区视频 | 天天干天天色综合 | 四虎永久在线精品波多野结衣 | 男女爆操 | 日韩永久在线观看免费视频 | futa百合文| 成人毛片高清视频观看 | 国内精品久久久久影院中国 | 欧美成人禁片在线观看俄罗斯 | 欧美帅老头oldmangay |