C#開發執行個體-訂製螢幕剪取工具(九)使用自訂游標和QQ截圖時的游標

來源:互聯網
上載者:User
在使用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,編譯,看看效果吧!

這裡添加了多個游標檔案,但是只用到了一個,其它的在以後添加的功能中會使用到。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.