1. 程式人生 > >C#軟體開發例項.私人訂製自己的螢幕截圖工具(九)使用自定義游標,QQ截圖時的游標

C#軟體開發例項.私人訂製自己的螢幕截圖工具(九)使用自定義游標,QQ截圖時的游標

本例項全部文章目錄


在使用QQ的截圖功能的時候,是不是覺得它的游標很酷呢?今天就說一下怎麼應用自定義游標,在我們的截圖工具中使用QQ截圖的游標。

開啟資源:


切換到檔案資源檢視:


開啟資原始檔目錄,將游標檔案複製到此目錄下:


選中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,編譯,截圖看看效果吧!

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

相關推薦

C#軟體開發例項.私人自己螢幕工具使用定義游標QQ游標

本例項全部文章目錄在使用QQ的截圖功能的時候,是不是覺得它的游標很酷呢?今天就說一下怎麼應用自定義游標,在我們的截圖工具中使用QQ截圖的游標。開啟資源:切換到檔案資源檢視:開啟資原始檔目錄,將游標檔案複製到此目錄下:選中Resources目錄,重新整理,顯示出剛剛複製進來的游

C#軟體開發例項.私人自己螢幕工具中包含滑鼠指標形狀

本例項全部文章目錄在寫一此幫助說明類的文件時,擷取的圖片如果還有滑鼠的指標形狀,看起來就更直觀更友好一些。接下來就講一下如何在截圖中包含滑鼠指標形狀。新增結構CURSORINFO:[StructLayo

C#軟體開發例項.私人自己螢幕工具新增放大鏡的功能

本例項全部文章目錄由於截圖時可能需要精確擷取某一部分,所以需要放大鏡的功能,這樣擷取的時候才更容易定位截圖的位置。新增PictureBox,name屬性設定為“pictureBox_zoom”;在“Form1_Load”事件處理函式中新增以下程式碼://設定放大鏡的大小

C#軟體開發例項.私人自己螢幕工具基本功能實現

本例項全部文章目錄實現原理基本截圖的功能主要靠響應主窗體的滑鼠按下、滑鼠移動、滑鼠擡起幾個事件的功能來實現的。擷取的圖片區域使用“Label”元件來顯示,需要重新實現“Label”元件的“Paint”方法。左鍵單擊開始截圖,右鍵單擊取消截圖,雙擊滑鼠左鍵完成截圖,將擷取的圖片

如何使hexo顯得自己更有逼格——定義與優化

部落格地址: 黑境​​​​ 優化策略 考慮到站點的穩定性和載入速度等,可以使用延遲載入圖片等方式提高響應速度。hexo還提供了一個最小化靜態檔案的外掛hexo-all-minifier可以壓縮html、css、js和影象檔案,刪除檔案中多餘的換行等。通過在

C#軟件開發實例.私人自己的屏幕工具中包括鼠標指針形狀

graphics code tar mic rect ext 技術 family fill 本實例所有文章文件夾(一)功能概覽(二)創建項目、註冊熱鍵、顯示截圖主窗體(三)托盤圖標及菜單的實現(四)基本截圖功能實現(五)針對拖拽時閃爍卡頓現象的優化(六)加入配置管理功能

STM32開發筆記55:STM32F4+DP83848乙太網通訊指南系列自己寫一個ARP協議

本章為系列指南的第九章,終結篇,本章主要來分析一下完整的ARP協議,並在STM32F4中實現一個精簡的ARP協議響應流程。 ARP協議的本質是使區域網內的其他主機能夠知道我在哪兒,比如在區域網上有人衝著所有人喊了一句「IP為XXXX的傢伙,你在哪兒」,我一聽,XXXX不是我的IP嗎,我得回答他啊

微信公眾平臺開發教程定義菜單

打開鏈接 delete toolbar 推送 優化 pcl reader 接口查詢 robot 應大家強烈要求,將自定義菜單功能課程提前。 一、概述: 如果只有輸入框,可能太簡單,感覺像命令行。自定義菜單,給我們提供了很大的靈活性,更符合用戶的操作習慣。在一個小小的微信對話

weex 項目開發定義 過濾函數 和 混合 及 定義 Header 組件

定義 blog weex top ber slice ear notice earch 1.自定義 過濾函數 src / filters / index.js /** * 自定義 過濾函數 */ export function host (url) { if (

Senparc.Weixin微信開發3 定義菜單與獲取用戶組

開發 分享圖片 獲取 local lock 自定義 oba summary setting 自定義菜單 代碼參考:http://www.cnblogs.com/szw/p/3750517.html 還可以使用他們官網的自定義:https://neuchar.senparc.

Senparc.Weixin微信開發3 定義選單與獲取使用者組

自定義選單 程式碼參考:http://www.cnblogs.com/szw/p/3750517.html 還可以使用他們官網的自定義:https://neuchar.senparc.com/User/WeixinMenu 註冊好,再先弄好配置。直接可以推送。 獲取使用者組 /// &

微信公眾號開發 -- 定義分享樣式

1.微信的分享介面呼叫其實相當於是重寫了個介面,自定義的是分享樣式 2.位置還是右上角的三個點點 首先獲取jssdk 因為我的token是儲存在資料庫裡的,所以只要appid和token 沒有的話需要加一步獲取token值 <?php class JSSDK { priv

微信公眾號開發 -- 定義選單 動態選單

簡單修改一下appid、appsecret 程式碼可直接複製使用 自定義選單 //獲取token值 $appid = ''; //微信支付申請對應的公眾號的APPID $appsecret = ''; ////微信支付申請對應的公眾號的APP Key $url = "https://

微信開發學習總結——定義選單5——個性化選單介面

一、個性化選單介面說明 為了幫助公眾號實現靈活的業務運營,微信公眾平臺新增了個性化選單介面,開發者可以通過該介面,讓公眾號的不同使用者群體看到不一樣的自定義選單。該介面開放給已認證訂閱號和已認證服務號。 開發者可以通過以下條件來設定使用者看到的選單: 1、使用者標籤(開發者的

微信開發學習總結——定義選單4——定義選單事件推送

一、自定義選單事件推送介面說明 使用者點選自定義選單後,微信會把點選事件推送給開發者,請注意,點選選單彈出子選單,不會產生上報。請注意,第3個到第8個的所有事件,僅支援微信iPhone5.4.1以上版本,和Android5.4以上版本的微信使用者,舊版本微信使用者點選後將沒有迴應,開

微信開發學習總結——定義選單3——定義選單刪除介面

自定義選單刪除介面 使用介面建立自定義選單後,開發者還可使用介面刪除當前使用的自定義選單。另請注意,在個性化選單時,呼叫此介面會刪除預設選單及全部個性化選單。 請求說明 http請求方式:GET https://api.weixin.qq.com/cgi-bin/menu/d

微信開發學習總結——定義選單2——定義選單查詢介面

自定義選單查詢介面 使用介面建立自定義選單後,開發者還可使用介面查詢自定義選單的結構。另外請注意,在設定了個性化選單後,使用本自定義選單查詢介面可以獲取預設選單和全部個性化選單資訊。 請求說明 http請求方式:GET https://api.weixin.qq.com/cg

微信開發學習總結——定義選單1——定義選單建立介面

一、自定義選單建立介面說明 自定義選單能夠幫助公眾號豐富介面,讓使用者更好更快地理解公眾號的功能。開啟自定義選單後,公眾號介面如圖所示: 請注意: ①自定義選單最多包括3個一級選單,每個一級選單最多包含5個二級選單。 ②一級選單最多4個漢字,二級選單最多7個漢字,多出來的部分將

PHP Yii2 定義業務異常類可支援返回任意自己想要的型別資料

public function beforeAction($action) { return parent::beforeAction($action); } public function runAction($id, $params = []) {

微信開發學習總結——定義選單——定義選單建立介面

一、自定義選單建立介面說明 自定義選單能夠幫助公眾號豐富介面,讓使用者更好更快地理解公眾號的功能。開啟自定義選單後,公眾號介面如圖所示: 請注意: ①自定義選單最多包括3個一級選單,每個一級選單最多包含5個二級選單。 ②一級選單最多4個漢字,二級選單最多7個漢