GDI+技術的座標解決方案

來源:互聯網
上載者:User
   GDI+技術已經給我們提供了很好的基本繪製封裝,從畫線,到畫圓,畫橢圓,畫矩形,畫各種曲線,等等。但是我們要利用這些基本技術來完成現實中需要的功能。座標就是一個很好的例子。

    二維座標的概念對於大家來說並不陌生。由座標系和具體資料圖形組成。我們分兩個部分來完成這個座標。

    首先,完成座標系的顯示。座標系定下來之後,它定義的某些參數直接影響到後面資料圖形的顯示。我們定義座標系類為BaseGraphics類,

屬性:
x軸每格座標間的實際象素  public int XScreenScale
y軸每格座標間的實際象素 public int YScreenScale
座標的起點,X值(圖紙上顯示) public float RealXOrigin
座標的起點,Y值(圖紙上顯示)public float RealYOrigin
座標的起點,右邊Y軸(圖紙上顯示)public float RealRightYOrigin
X軸每格代表的數值public float RealXTickValue
Y軸每格代表的數值public float RealYTickValue
X座標的標籤public string LabelX
Y座標的標籤  public string LabelY
相隔顯示X座標刻度值public int XInterval
相隔顯示Y座標刻度值public int YInterval
X座標值精度public string XVirtualValue
Y座標值精度 public string YVirtualValue

方法:

繪製圖形方法:

繪製X座標
  protected void DrawXAxis(Graphics g)

繪製Y座標
  protected void DrawYAxis(Graphics g)

繪製頂部X座標,不帶刻度
protected void DrawTopXAxisWithoutScale(Graphics g)
繪製右邊Y座標,不帶刻度
protected void DrawRightYAxisWithoutScale(Graphics g)

繪製X座標分隔線及背景線
 protected void DrawXCompartLine(Graphics g)
 繪製Y座標分隔線及背景線
protected void DrawYCompartLine(Graphics g)

 繪製X座標標籤
  protected void DrawXlabel(Graphics g)

 繪製Y座標標籤
  protected void DrawYlabel(Graphics g)
 
繪製單一座標,一個Y軸,一個X軸
public void DrawSingleCoordinate(Graphics g) 
 

資料轉換方法:

將X座標轉換成對應電腦的象素點
 電腦螢幕上對應的象素點X座標
  public int  TranslateX(float x)
 
 將Y座標轉換成對應電腦的象素點
電腦螢幕上對應的象素點Y座標
  public int TranslateY(float y)

  開始使用BaseGraphics類的時候,可以先繼承它,這樣座標系的顯示就包括新類中了。擴充這個使用類只要把要顯示的圖形定義出所需的屬性即可。

考慮到圖形的重繪機制,每次重繪的時候,都要將圖形從最初開始重繪,這樣很費CPU的時間,可以先定義一個BITMAP,把圖形繪製在BITMAP上,響應重繪訊息時直接調用BITMAP即可。於是在該使用類中定義public Bitmap bitmap 這是該類向外界任何容器提供圖形的唯一途徑。

圖形曲線類定義該曲線的相關的屬性,及由一個記憶體表提供的資料,包括X值和Y值。

使用類中將圖形曲線類逐個載入,逐個顯示。因為圖形曲線類中提供的資料是工程資料,我們要先將它轉換為象素資料。這個轉換公式,由基類裡的TranslateX(float x)和TranslateY(float y)來完成。

經過上面的折騰,我們可以來寫寫這個方案了。demo

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.