控件還處理鼠標按鍵松 開事件,其代碼為
/// <summary>
/// 處理鼠標按鍵松開事件
/// </summary>
/// <param name="e">事件參數 </param>
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp (e);
if( this.Marking )
{
if( myCurrentLine != null )
{
System.Drawing.Rectangle rect = myCurrentLine.Bounds ;
if( rect.Width > 5 || rect.Height >= 5 )
{
myCurrentInfo.Lines.Add( myCurrentLine);
}
myCurrentLine = null;
}
}
}
在這個代碼中 ,若當前處理的線條軌跡存在而且不是很小,則添加到當前簽名對象中去。此處判斷軌跡邊 界的大小是為了忽略用戶的誤操作,用戶可能不經意的點擊了鼠標按鍵,則程序會生成一個 軌跡信息,若這個軌跡太小,則程序就認為這個軌跡是誤操作,也就忽略掉該軌跡了。
其實在Windows操作系統判斷鼠標雙擊操作也采用類似的方法。用戶連續兩次快速按 下和松開鼠標按鍵,則用戶操作可能是雙擊操作,但也不一定是,此時Windows會判斷兩次鼠 標點擊操作的間隔時間和鼠標光標移動的距離,若間隔時間過長或者鼠標移動的距離過大, 則不是雙擊操作,而是兩個單擊操作,Windows這樣判斷也是為了減少用戶的誤操作。
測試控件
控件編寫好後我們就作了一個frmTest的窗體來測試這個用戶控件。 編譯程序,打開窗體設計器,在工具箱的我的用戶控件頁面中可以看到有一個 PenMakeControl的用戶控件,若沒有則鼠標右擊工具箱,選擇菜單項目“添加/移除項 目”。在對話框中點擊浏覽選擇剛剛編譯生成的EXE或DLL文件,然後選中 PenMarkControl即可在工具箱上新增PenMarkControl項目。我們在窗體上放置一個 PenMarkControl,再放置一些按鈕,添加一些代碼來測試這個控件的各種功能。
提交程序
設置程序的項目類型為類庫,重新編譯,生成一個DLL文件,這個DLL文件就是我們可 以提交給客戶的文件。
小結
在本課程中,我們一起研究了使用C#開發一個具 有一定復雜度的圖像軟件。在這個過程中我們了解了髒矩形技術,初步接觸了文檔對象模型 ,XML序列化。