c# 界面編程 虛端子連接關係展示

作爲一個電氣專業,半路出家寫代碼的我來說一直排斥做界面。抑鬱的是,有個項目客戶強烈要求界面展示,沒辦法開始着手看看界面編程,慶幸的是這個項目要求的界面展示還比較簡單,只是靜態展示、連接而已。花了一週時間做出來了,感覺還挺好玩的。


下面是運行的一個截圖,

1、左邊是一個SCD文件中所有的IED列表,右邊是虛端子的連接關係展示;

2、中間的大框是一個IED,左邊是本IED訂閱的其他IED的GOOSE\SV信號,右邊是本IED發佈的GOOSE\SV信號;

3、點擊IED之間的連線,彈出具體的虛端子連接詳情,保護點名、註釋、和點的值;

4、點擊小矩形框,可以切換到小矩形對應的IED中。


在這裏有關SCD文件解析的東西,就不做分享了,主要記錄一下C#界面編程方面的知識點。

這裏主要用到了一個splitcontainer控件、treeview控件、panel控件,繪畫主要在panel控件上。

1、在某一個控件上繪畫的時候,只需要重載該控件的paint方法;

2、獲取控件的工作區域的矩形:

     獲取Form1的大小用Rectangle Form1Rect = this.ClientRectangle;獲取某個控件的大小:splitContainer1.Panel2.ClientRectangle;

3、設置控件的工作區域矩形:

      drawPanel.SetBounds(0, 0, splitContainer1.Panel2.ClientRectangle.Width, 5 * height / 4);

4、設置滾動條顯示:

      panel的屬性設置:Dock設置爲none   Anchor設置爲top、left(不能四個全部設置上就行,要不然滾動條怎麼滾動啊)

      splitContainer1.Panel2的屬性設置:AutoScroll設置爲TRUE即可

      注意:這裏有個小問題,困擾我很久,終於把它解決了。當你切換到一個panel的height比較大,splitcontainer.panel2上出現滾動條的情況下 ,如果將滾動條拉倒下面,然後再切換界面的時候,這時候雖然新界面的height沒有超過form1的height,但是滾動條還是在,看着很煩。想了各種方法,最後找了一個很簡單的方法就是重繪的時候設置滾動條的值爲0即可。splitContainer1.Panel2.VerticalScroll.Value = 0;

5、接下來就是畫布上繪畫了:

Graphics g = e.Graphics;

//畫矩形

SolidBrush SBrush = new SolidBrush(Color.FromArgb(196, 243, 196));//添加畫刷

g.FillRectangle(SBrush, rectangle);//在指定的矩形區域,填充顏色

Pen pen = new Pen(Color.Gray, 2);//添加畫筆

g.DrawRectangle(pen, rectangle);//畫矩形框

//畫線

g.DrawLine(pen, x + 5* width / 6, y + rowHeigh, x + 5 * width / 6, y + heigh);//定義兩個點,根據定義好的筆,畫線即可

//畫文字

Font font = new System.Drawing.Font("宋體",12f);//設置字體

SolidBrush drawBrush = new SolidBrush(Color.Black); // Create brush.

RectangleF stringRect = new RectangleF(x, y, width, heigh);    // 設置文字顯示的區域

StringFormat strForm = new StringFormat(); strForm.Alignment = StringAlignment.Center;//這裏主要是設置文字的對齊方式,居中

g.DrawString(this.subiedinfo, this.Font, drawBrush, stringRect, strForm);


至於其他位置變化,矩形大小變化的設計,就依據項目具體實施了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章