在本控件 的處理鼠標事件時,需要判斷鼠標光標下的單元格對象,事件參數提供的鼠標光標坐標是在 控件客戶區中的坐標,若直接根據這個控件客戶區坐標位置查找單元格對象,當控件發生滾 動時,這樣的操作過程是錯誤的。因此需要將鼠標的控件客戶區坐標轉換為視圖坐標,轉換 後再搜索單元格才是正確的。
控件中定義了一個InvalidateCell方法,參數是Cell類 型,該方法的功能是聲明某個單元格樣式無效,需要重新繪制。由於聲明控件部分界面無效 的方法Invalidate的參數是采用控件客戶區坐標的,而單元格位置是采用文檔視圖坐標的, 因此需要進行坐標轉換。
折射效果在圖形開發中是會經常遇到的,此處的折射效果是 比較簡單的,只是簡單的整體移位。在一些復雜的圖形用戶界面中還可能發生圖形的縮放和 旋轉,文檔視圖的不同的部分發生了不同的折射效應,此時程序處理折射效應是比較復雜的 。
完成 開發
為了開發方便,我們設置該程序為WinForm應用程序模式,編譯生成一個EXE文件 ,我們可以修改工程類型為類庫,編譯生成一個DLL文件,我們就可以把這個DLL提交給客戶 使用了。
小結
在本課程中,我們一起研究了一個稍微復雜的C#開發的圖形軟 件,相對於上一個演示軟件,這個軟件展示了更多的C#圖形編程技術,包括圖形文檔的排版 ,使用剪切矩形優化圖形繪制,理解了用戶界面的折射效應。相信大家認真學習後能身體力 行,開始能編寫一些自己的圖形軟件了。
在下一個課程中,我們將探索更為復雜的C# 圖形開發,開始學習高級圖形軟件所用到的一些開發技術。使得大家能在C#圖形開發的世界 中更自在的探索研究。