在使用QQ的功能的時候,是不是覺得它的游標很酷呢?今天就說一下怎麼應用自訂游標,在我們的工具中使用QQ的游標。
開啟資源:
切換到檔案資源檢視:
開啟資源檔目錄,將游標檔案複製到此目錄下:
所需游標檔案下載:C#軟體開發執行個體.私人訂製自己的螢幕工具中使用的游標檔案
選中Resources目錄,重新整理,顯示出剛剛複製進來的游標檔案:
選中游標檔案,拖動到資源的檔案視圖中:
資源資源名稱中的單詞第一個字母改為大寫。
游標預覽:
在Form1類中添加私人變數:
#region 自訂游標 System.Windows.Forms.Cursor cursorCross = null; System.Windows.Forms.Cursor cursorDefault = null; System.Windows.Forms.Cursor cursorText = null; System.Windows.Forms.Cursor cursorColor = null; #endregion
添加WindowsAPI聲明:
[DllImport("user32.dll")] private static extern IntPtr LoadCursorFromFile(string fileName);
添加從已有資源中獲得游標的方法:
/// <summary> /// 從已有資源中獲得游標 /// </summary> /// <param name="resource"></param> /// <returns></returns> public static Cursor getCursorFromResource(byte[] resource) { byte[] b = resource; FileStream fileStream = new FileStream("cursorData.dat", FileMode.Create); fileStream.Write(b, 0, b.Length); fileStream.Close(); Cursor cur = new Cursor(LoadCursorFromFile("cursorData.dat")); return cur; }
添加視窗初始化事件處理常式,添加自訂游標:
/// <summary> /// 視窗初始化事件處理常式 /// </summary> private void Form1_Init() { this.isCuting = false; this.beginPoint = new Point(0, 0); this.endPoint = new Point(0, 0); cursorDefault = getCursorFromResource(Properties.Resources.Cursor_Default); cursorCross = getCursorFromResource(Properties.Resources.Cursor_Cross); cursorText = getCursorFromResource(Properties.Resources.Cursor_Text); cursorColor = getCursorFromResource(Properties.Resources.Cursor_Color); }
設定預設游標,處理游標狀態:
在ShowForm方法的else條件中添加:
this.Cursor = cursorDefault;
在ExitCutImage方法中添加代碼:
this.Cursor = cursorDefault;
添加滑鼠進入Form1表單事件處理常式:
/// <summary> /// 滑鼠進入Form1表單事件處理常式 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_MouseEnter(object sender, EventArgs e) { this.Cursor = cursorDefault; }
Form1的建構函式中添加代碼:
Form1_Init();
Ok,編譯,看看效果吧!
這裡添加了多個游標檔案,但是只用到了一個,其它的在以後添加的功能中會使用到。