亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#截圖程序類似騰訊QQ截圖實現(xiàn)代碼

 更新時間:2012年12月09日 18:13:02   作者:  
拖動過程中顯示當前鼠標下一小塊的圖像信息 尺寸、顏色信息的 注意 這里顏色是用的ARGB,需要的朋友可以參考下

最近把以前制作的截圖程序重新寫了一下動了一個大手術(shù) 高質(zhì)量仿照的TX的截圖程序

先看幾個效果圖

貌似圖被和諧了

拖動過程中顯示當前鼠標下一小塊的圖像信息 尺寸、顏色信息的  注意 這里顏色是用的ARGB 本來截圖的話RGB就夠了 可是我把那個做成了控件 不僅截圖可用 其他地方也可用作圖像的選取 具體看代碼就知道了


貌似圖片被和諧了

并且我還加了一個可以截圖的同時把鼠標也捕獲下來 現(xiàn)在看到的是我自己的截圖程序 那個工具條啥的 是從TX的截圖程序上面拔下來的


貌似圖片被和諧了

上面是幾個工具條上的工具的三種粗細型號的展示 看到的藍色的粗的刷筆 本來想的不應(yīng)該是這個效果的 應(yīng)該是顏色填充均勻的那種 但是仔細一想代碼中用的是DrawLine(P,PointLast,PointCurrent);這種方式來畫的自由線條 如果是一個像素的沒什么問題 粗點的就是上面看到的那種效果 也就是由許多小線段拼接出來的自由線條而每個線段兩端都是方的所以線段與線段之間的接縫處 可能就有問題 反正就那個意思 你懂得  不過再仔細一想雖然不是想要的效果但卻意外的出現(xiàn)了 蠟筆的效果 果斷也就不改了這樣也不錯



同樣的具有自動捕獲窗體邊框的功能


圖片貌似被和諧了

使用也非常簡單 這個截圖的功能寫到了一個dll中 引用名稱空間 然后FrmCapture 就是截圖的了給了他幾個屬性 也就是上面看到的

同時在拖動過程中可以通過鍵盤 wasd 四個鍵來控制鼠標精確移動

操作方式也和TX的一樣

右鍵鼠標 如果有選擇的區(qū)域則取消選擇的區(qū)域   沒有則退出截圖

雙擊將選擇的區(qū)域復(fù)制到剪切板

整個思路也和前面幾篇文章中提到的一樣 只是在代碼層面上動了一個大手術(shù) 因為原來寫的主要是凸顯那個自動捕獲窗體的功能

復(fù)制代碼 代碼如下:

//根據(jù)鼠標位置找尋窗體平繪制邊框
private void FoundAndDrawWindowRect() {
Win32.LPPOINT pt = new Win32.LPPOINT();
pt.X = MousePosition.X; pt.Y = MousePosition.Y;
IntPtr hWnd = Win32.ChildWindowFromPointEx(Win32.GetDesktopWindow(), pt,
Win32.CWP_SKIPINVISIBL | Win32.CWP_SKIPDISABLED);
if (hWnd != IntPtr.Zero) {
IntPtr hTemp = hWnd;
while (true) { //循環(huán)的根據(jù)坐標向內(nèi)部找尋子窗體 直到無法找到位置
Win32.ScreenToClient(hTemp, out pt);
hTemp = Win32.ChildWindowFromPointEx(hTemp, pt, Win32.CWP_All);
if (hTemp == IntPtr.Zero || hTemp == hWnd)
break;
hWnd = hTemp;
pt.X = MousePosition.X; pt.Y = MousePosition.Y; //坐標還原為屏幕坐標
}
Win32.LPRECT rect = new Win32.LPRECT();
Win32.GetWindowRect(hWnd, out rect);
imageProcessBox1.SetSelectRect(
new Rectangle(rect.Left, rect.Top,
rect.Right - rect.Left, rect.Bottom - rect.Top));
}
}

同前幾篇文章一樣是通過禁用自身窗體然后通過ChildWindowFromPointEx函數(shù)來根據(jù)鼠標位置 獲得鼠標下面的窗體 因為在獲取的時候 鼠標下面是截圖程序的一個窗體 所以在找尋窗體的時候得把自己忽略掉 而ChildWindowFromPointEx在查找過程中可以忽略禁用的窗體 所以講自己禁用就到到目的了 然后通過Hook來監(jiān)視鼠標的行為 來恢復(fù)禁用的窗體

復(fù)制代碼 代碼如下:

private void m_MHook_MHookEvent(object sender, MHookEventArgs e) {

........

//鼠標點下恢復(fù)窗體禁用
if (e.MButton == ButtonStatus.LeftDown || e.MButton == ButtonStatus.RightDown) {
this.Enabled = true;
imageProcessBox1.IsDrawOperationDot = true;
}

........
}

還有一點 就只捕獲鼠標的時候
復(fù)制代碼 代碼如下:

//獲取桌面圖像
private Bitmap GetScreen() {
Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height);
if (this.isCaptureCursor) { //是否捕獲鼠標
//如果直接將捕獲當?shù)氖髽水嬙赽mp上 光標不會反色 指針邊框也很濃 也就是說
//盡管bmp上繪制了圖像 繪制鼠標的時候還是以黑色作為鼠標的背景 然后在將混合好的鼠標繪制到圖像 會很別扭
//所以 干脆直接在桌面把鼠標繪制出來再截取桌面
using (Graphics g = Graphics.FromHwnd(IntPtr.Zero)) { //傳入0默認就是桌面 Win32.GetDesktopWindow()也可以
Win32.PCURSORINFO pci;
pci.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(typeof(Win32.PCURSORINFO));
Win32.GetCursorInfo(out pci);
if (pci.hCursor != IntPtr.Zero) {
Cursor cur = new Cursor(pci.hCursor);
g.CopyFromScreen(0, 0, 0, 0, bmp.Size); //在桌面繪制鼠標前 先在桌面繪制一下當前的桌面圖像
//如果不繪制當前桌面 那么cur.Draw的時候會是用歷史桌面的快照 進行鼠標的混合 那么到時候混出現(xiàn)底色(測試中就是這樣的)
cur.Draw(g, new Rectangle((Point)((Size)MousePosition - (Size)cur.HotSpot), cur.Size));
}
}
}
//做完以上操作 才開始捕獲桌面圖像
using (Graphics g = Graphics.FromImage(bmp)) {
g.CopyFromScreen(0, 0, 0, 0, bmp.Size);
}
return bmp;
}

我總感覺上面的方式很別扭 可是目前我也就只能通過這種方式去捕獲鼠標了

有興趣的就自己改造吧 導入那個dll自己想咋改造就咋改造

相關(guān)文章

  • C#?崩潰異常中研究頁堆布局的詳細過程

    C#?崩潰異常中研究頁堆布局的詳細過程

    最近遇到一位朋友的程序崩潰,發(fā)現(xiàn)崩潰點在富編輯器 msftedit 上,這個不是重點,重點在于發(fā)現(xiàn)他已經(jīng)開啟了 頁堆,由于 頁堆 和 NT堆 的內(nèi)存布局完全不一樣,這一篇結(jié)合我的了解以及 windbg 驗證來系統(tǒng)的介紹下 頁堆,需要的朋友可以參考下
    2022-10-10
  • Unity3D開發(fā)教程:憤怒的小鳥

    Unity3D開發(fā)教程:憤怒的小鳥

    這篇文章詳細的講解了如何從0開發(fā)出一個Unity3D的小游戲憤怒的小鳥,本文包含大量的圖片與文字描述,也含有大量的源代碼,可以讓你快速入手,希望本篇文章對你有所幫助
    2021-06-06
  • 基于mvc5+ef6+Bootstrap框架實現(xiàn)身份驗證和權(quán)限管理

    基于mvc5+ef6+Bootstrap框架實現(xiàn)身份驗證和權(quán)限管理

    最近剛做完一個項目,項目架構(gòu)師使用mvc5+ef6+Bootstrap,用的是vs2015,數(shù)據(jù)庫是sql server2014。下面小編把mvc5+ef6+Bootstrap項目心得之身份驗證和權(quán)限管理模塊的實現(xiàn)思路分享給大家,需要的朋友可以參考下
    2016-06-06
  • C#實現(xiàn)附件上傳和下載功能

    C#實現(xiàn)附件上傳和下載功能

    這篇文章主要介紹了C#實現(xiàn)附件上傳和下載功能,需要的朋友可以參考下
    2015-11-11
  • Unity實現(xiàn)角色受擊身體邊緣發(fā)光特效

    Unity實現(xiàn)角色受擊身體邊緣發(fā)光特效

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)角色受擊身體邊緣發(fā)光特效,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • WPF+SkiaSharp實現(xiàn)自繪拖曳小球

    WPF+SkiaSharp實現(xiàn)自繪拖曳小球

    WPF的拖曳效果,基本配置一下,就可以了,但是自繪的話,就得自己控制。本文將利用WPF+SkiaSharp實現(xiàn)自繪拖曳小球,感興趣的可以動手嘗試一下
    2022-07-07
  • C#微信開發(fā)之接收 / 返回文本消息

    C#微信開發(fā)之接收 / 返回文本消息

    本文主要介紹了C#微信開發(fā)之接收 / 返回文本消息原理與實現(xiàn)方法,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • C#使用ADO.Net連接數(shù)據(jù)庫與DbProviderFactory實現(xiàn)多數(shù)據(jù)庫訪問

    C#使用ADO.Net連接數(shù)據(jù)庫與DbProviderFactory實現(xiàn)多數(shù)據(jù)庫訪問

    這篇文章介紹了C#使用ADO.Net連接數(shù)據(jù)庫與DbProviderFactory實現(xiàn)多數(shù)據(jù)庫訪問的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • c#菜單動態(tài)合并的實現(xiàn)方法

    c#菜單動態(tài)合并的實現(xiàn)方法

    這篇文章主要介紹了c#菜單動態(tài)合并的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • c# 如何將RadioButton與DataTable數(shù)據(jù)進行綁定

    c# 如何將RadioButton與DataTable數(shù)據(jù)進行綁定

    我接觸到的有將兩個控件的數(shù)據(jù)綁定、將控件的屬性與DataTable綁定,以下說說在將DataTable與RadioButton綁定的過程中出現(xiàn)的問題
    2012-11-11

最新評論