程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第七講 C#圖形開發高級篇(3)

C#發現之旅第七講 C#圖形開發高級篇(3)

編輯:關於C語言
裡說明一下,一次調用DrawLines函數和多次調用DrawLine函數 是有差別的。由於線段的兩端是可以設置不同的樣式,DrawLines能一次性繪制多個線段,而 且相鄰線段的端點經過了連接處理;而使用DrawLine是一條條繪制線段的,相鄰線段的端點 沒有連接處理,當線條寬度很大或者圖形進行的放大處理則會暴露出問題,繪制的圖形不大 美觀。

為了向其他程序提供簽名信息,本對象還定義了CreateBitmap函數,該函數能 創建一個保存簽名圖形的位圖對象。該函數演示裡如何在內存中創建圖片的過程。

在 本函數中,首先是創建一個Bitmap對象,該圖片對象的大小等於簽名對象的大小,然後使用 Graphics的FromImage函數在這個圖片的基礎上創建一個圖形繪制對象,使用這個Graphics對 象進行繪圖操作都會在這個Bitmap上面留下痕跡,此時圖形輸出目標不是顯示器或者打印機 ,而是內存中的一個圖片。進行坐標轉化後調用對象的Draw函數來繪制圖形,繪制圖形完畢 後就提供這個bitmap對象給其他軟件使用了。

/// <summary>
/// 創建包含簽名圖形的圖片對象
/// </summary>
/// <returns>創建 的圖片對象</returns>
public Bitmap CreateBitmap()
{
   Rectangle bounds = this.Bounds ;
  Bitmap bmp = new Bitmap( bounds.Width , bounds.Height );
  using( Graphics g = Graphics.FromImage( bmp ))
   {
    g.TranslateTransform( -bounds.Left , -bounds.Top );
     Draw( g , bounds );
  }
  return bmp ;
}

這種在 內存中創建圖片的方法可用於任何類型的.NET程序中,我們可以在ASP.Net,命令行程序或者 Windows服務中使用這種方式來創建圖形,如此我們知道圖形編程不限於桌面軟件開發,任何 類型的軟件中都可以使用圖形編程。

PenMarkInfoDocument

本對象用於描述一 個完整的簽名文檔信息對象,它可以包含若干個簽名對象。並定義了加載和保存XML文件的功 能。

本對象使用XML序列化來保存數據到XML文檔,使用XML反序列化來從XML文檔來加 載對象數據。我們使用XmlSerializer對象來實現XML序列化和反序列化,該類型在名稱空間 System.Xml.Serialization下面。在XmlSerializer的幫助下,我們可以很方便的實現XML序 列化和反序列化。

這段代碼就是將對象序列化到XML文檔中。只要創建一個 XmlSerializer對象,指定要序列化的類型,指定XML書寫器,然後調用它的Serialize方法即 可完成序列化操作。

/// <summary>
/// 將對象序列化到XML文檔 中
/// </summary>
/// <param name="writer">XML文 檔書寫器</param>
public void Save( System.Xml.XMLWriter writer )
{
  XmlSerializer ser = new XMLSerializer( this.GetType());
   ser.Serialize( writer , this );
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved