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

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

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

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

先看幾個(gè)效果圖

貌似圖被和諧了

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


貌似圖片被和諧了

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


貌似圖片被和諧了

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



同樣的具有自動(dòng)捕獲窗體邊框的功能


圖片貌似被和諧了

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

同時(shí)在拖動(dòng)過程中可以通過鍵盤 wasd 四個(gè)鍵來控制鼠標(biāo)精確移動(dòng)

操作方式也和TX的一樣

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

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

整個(gè)思路也和前面幾篇文章中提到的一樣 只是在代碼層面上動(dòng)了一個(gè)大手術(shù) 因?yàn)樵瓉韺懙闹饕峭癸@那個(gè)自動(dòng)捕獲窗體的功能

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

//根據(jù)鼠標(biāo)位置找尋窗體平繪制邊框
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ù)坐標(biāo)向內(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; //坐標(biāo)還原為屏幕坐標(biāo)
}
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ù)鼠標(biāo)位置 獲得鼠標(biāo)下面的窗體 因?yàn)樵讷@取的時(shí)候 鼠標(biāo)下面是截圖程序的一個(gè)窗體 所以在找尋窗體的時(shí)候得把自己忽略掉 而ChildWindowFromPointEx在查找過程中可以忽略禁用的窗體 所以講自己禁用就到到目的了 然后通過Hook來監(jiān)視鼠標(biāo)的行為 來恢復(fù)禁用的窗體

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

private void m_MHook_MHookEvent(object sender, MHookEventArgs e) {

........

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

........
}

還有一點(diǎn) 就只捕獲鼠標(biāo)的時(shí)候
復(fù)制代碼 代碼如下:

//獲取桌面圖像
private Bitmap GetScreen() {
Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height);
if (this.isCaptureCursor) { //是否捕獲鼠標(biāo)
//如果直接將捕獲當(dāng)?shù)氖髽?biāo)畫在bmp上 光標(biāo)不會(huì)反色 指針邊框也很濃 也就是說
//盡管bmp上繪制了圖像 繪制鼠標(biāo)的時(shí)候還是以黑色作為鼠標(biāo)的背景 然后在將混合好的鼠標(biāo)繪制到圖像 會(huì)很別扭
//所以 干脆直接在桌面把鼠標(biāo)繪制出來再截取桌面
using (Graphics g = Graphics.FromHwnd(IntPtr.Zero)) { //傳入0默認(rèn)就是桌面 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); //在桌面繪制鼠標(biāo)前 先在桌面繪制一下當(dāng)前的桌面圖像
//如果不繪制當(dāng)前桌面 那么cur.Draw的時(shí)候會(huì)是用歷史桌面的快照 進(jìn)行鼠標(biāo)的混合 那么到時(shí)候混出現(xiàn)底色(測(cè)試中就是這樣的)
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;
}

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

有興趣的就自己改造吧 導(dǎo)入那個(gè)dll自己想咋改造就咋改造

相關(guān)文章

  • C#?崩潰異常中研究頁(yè)堆布局的詳細(xì)過程

    C#?崩潰異常中研究頁(yè)堆布局的詳細(xì)過程

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論