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

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

編輯:關於C語言

XML反序列化不能將加載的數據設 置到一個現有對象,而是需要重新創建一個對象,在這個代碼中定義了靜態函數能從XML文檔 反序利化生成一個新的簽名信息文檔對象。其代碼為

/// <summary>
/// 根據XML文檔反序列化生成簽名信息文檔對象
/// </summary>
/// <param name="strFileName">XML文件名</param>
/// <returns>生成的簽名信息對象列表</returns>
public static PenMarkInfoDocument Load( string strFileName )
{
   System.Xml.XmlTextReader reader = new System.Xml.XMLTextReader( strFileName );
  XmlSerializer ser = new XMLSerializer( typeof( PenMarkInfoDocument ));
  PenMarkInfoDocument list = ( PenMarkInfoDocument ) ser.Deserialize( reader );
  reader.Close();
  return list ;
}

在這個代碼 中,我們首先根據指定的XML文件名創建XML文檔讀取器,創建一個XMLSerializer對象,指定 要反序列化的對象類型,然後調用 Deserialize函數就可獲得一個反序列化所得的對象。

對WEB系統,XML序列化和反序列化是WebService的基礎,服務器端發送的數據首先序 列化為XML文檔然後使用HTTP協議發送出去,而客戶端獲得XML文檔使用XML反序列化來獲得對 象數據。

關於XML序列化和反序列化可參考MSDN文檔 Visual Studio.NET/.NET FrameWord/使用.Net Framework編程/序列化對象/XML和SOAP序列化。

PenMarkControl

本類型從UseControl上派生的,用於在用戶界面上顯示和操 作簽名信息的。該類型是本演示程序中最復雜的部分。

我們首先看看這個控件是如何 繪制用戶界面的,我們找到該控件重寫的OnPaint函數,其代碼如下

/// <summary>
/// 繪制用戶界面
/// </summary>
/// <param name="e">參數</param>
protected override void OnPaint(PaintEventArgs e)
{
  base.OnPaint (e);
   e.Graphics.TranslateTransform( this.AutoScrollPosition.X , this.AutoScrollPosition.Y );
  System.Drawing.Rectangle ClipRect = e.ClipRectangle ;
  ClipRect.Offset( - this.AutoScrollPosition.X , - this.AutoScrollPosition.Y );
  System.Collections.ArrayList list = new ArrayList();
  list.AddRange( this.myDocument );
  if( this.Marking )
  {
    list.Add( this.myCurrentInfo );
  }
   foreach( PenMarkInfo info in list )
  {
    info.Draw( e.Graphics , ClipRect );
  }
  if( myCurrentInfo != null )
  {
     System.Drawing.Rectangle rect = myCurrentInfo.Bounds ;
     System.Windows.Forms.ControlPaint.DrawFocusRectangle( e.Graphics , rect );
  }
}

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