為了向其他程序提供簽名信息,本對象還定義了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 );
}