QQ截屏完美實現 小結

QQ截屏的完美模擬

[write by TBWood-小湯 轉載請說明出處http://blog.csdn.net/tbwood ]

至現在2011215,網上仍然沒有一個能夠在灰暗遮罩的功能上和即時效率上完美模擬QQ截屏的軟件,以下的帖子和軟件和QQ截屏相比都相差了太多。

http://download.csdn.net/source/2721924

http://www.vckbase.com/document/viewdoc/?id=1671

http://blog.csdn.net/laviewpbt/archive/2006/11/07/1370783.aspx

 

思考了30多天了,參照了很多基於VB,VC,DELPHI等文章(本人使用BCB的可視化程序開發),最惱人的是看完後發現還是不能滿足自己的要求,甚至格格不入;最後還是得自己慢慢的用排除式研究法一點點的去嘗試每一種可能性,其中幾次都想放棄,我知道那是因爲當天太累了,於是隔日在戰,隨着一天天的努力思考,今天終於攻破了軟件的幾大難點,接下來是一些修飾實現。在整個設計過程中,繞了很多彎,當然現在看起來,這些彎是必要的,也是很有價值的,促使我熟悉和掌握了很多知識。在這個軟件設計開發過程中,主要需要解決的問題有

1.      窗口前置:我在csdn的博客文章裏已經完整,詳細的,網上無前例的解剖了這個功能的實現:

http://blog.csdn.net/TBWood/archive/2011/01/26/6165106.aspx

2.      蒙版效果:打開QQ截屏,會發現屏幕變暗。我們第一想到的就是用一定透明度的窗體來遮罩。這樣效果確實很好,但是,問題就出來了,這樣你會發現,你的程序的效率始終沒有QQ那麼完美,不要嘗試安慰自己,一點點的差別都充分說明了實現方式的不同。

這時很多人想到了GDI+,至於我是怎麼解決的,等完全完成後在論述。給大家提供一個思路:用窗口分析工具仔細的剖析QQ截屏。我爲此還做了一個特定功能的窗口分析工具,以後有空再打包發佈。

3.      八手柄Tracker效果:使用QQ截圖時,會出現一個Tracker效果,八個手柄還能拖動,有人想到了Tracker

http://www.vckbase.com/document/viewdoc/?id=1673

剛開始以爲MFC裏的CRectTracker是很神聖的東西,還研究了很久,想不通爲什麼它可以凌駕在圖片上方畫圖,而不影響底下的圖案。

有人說可以使用“pmXor”自己實現一個,在這,我可以很明確的否定這一方法,因爲pmXor還是會影響背景圖案的。這是一種二元光柵操作。

確實可以製作一個Tracker,在內存中把tracker層和背景圖層分開,使用實時計算,添加和直接繪圖的方式繪製到窗口上。

另外要說明的是,QQ截屏使用CRectTracker類後的效果並不好,延遲感嚴重。

4.      效率問題:每一次效率的偏差,都會讓我懷疑整個設計的正確與否,這個問題是貫穿始終的。總之發現問題,不能安慰自己,要深入探究其深入的根源。在開發這個軟件的過程重,大部分時間都是花在研究與本軟件實現沒有直接關係的問題。

 

GITHUB源碼地址:TB_PrintScreen


致謝:

感謝我的父母,給了我良好的家庭壞境(大冬天,允許我整天整晚的開空調J)。感謝各位幫助過我的朋友和同學。最後感謝網上無數的先驅們,那些停下腳步,細細總結,爲後人提供寶貴經驗的人,都是好樣的!


2017年12月20補充:後來QQ截屏進行了進一步升級,比如:自動識別文字區域,修改等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章