螢幕任意點顏色拾取

2021-09-08 14:35:18 字數 1114 閱讀 6383

發現很多軟體顏色都很養眼,卻不知具體的顏色值是多少,好參考一下。於是想做個螢幕取色的東西。不過這個東西純粹是為了技術目的,用qq就可以搞到這個顏色值,就連畫筆都可以,只不過複雜些罷了。先把效果放上來。如圖1。

圖1 color picker(很土啊)

做這個東西只要解決如下的兩個問題:

1.全域性滑鼠鉤子:做這個東西的唯一乙個技術難點,雖然網上有各種c++的dll實現方式,但是總覺得為了乙個hook,在c#的專案裡建立乙個c++的專案感覺很不爽。後來終於找到了不需要新建專案的方法。(下文介紹。)

2.獲取滑鼠所在點的顏色值。對於有經驗的人來說,這個不是個問題。沒有經驗的人,google一下,其實也不是個問題。

微軟的一篇

幫助文件

上信誓旦旦地說「global hooks are not supported in the .net framework」。不知害得多少人繞過.net去實現全域性鉤子。可就是有人不信這個邪,做出了不需要dll的c#實現的全域性鉤子(參見

此文)。雖然只限於滑鼠、鍵盤鉤子,但也足夠用了。

第乙個問題算是解決了。再來看第二個問題。螢幕取色。稍稍google一下就可以知道,用graphics物件的copyfromscreen方法就可以了。可是graphics是form裡的東西,在wpf裡沒有graphics物件啊。當然也可以再來個api呼叫的,不過總感覺直接呼叫api不好。所以想來想去,還是在這個wpf專案裡新增了對system.drawing的引用。並把它包成了乙個類。**如下。

1system.windows;

2using

system.windows.media;

3using

bitmap 

=system.drawing.bitmap;

4using

graphics 

=system.drawing.graphics;

5using

size 

=system.drawing.size;67

namespace

colorpicker825

26

螢幕顏色拾取器

遇到乙個好看的背景顏色,想知道它的rgb值,這時就需要螢幕顏色拾取器了。如下,用滑鼠左鍵點中 字,拖曳到要拾取的顏色位置,鬆開左鍵就得該位置的rgb值了。該工程的qt原始碼和exe工具鏈結 使用qt5.4.1編寫螢幕拾取器的 如下 1 標頭檔案 mycolor.h pragma once inclu...

用VC 開發乙個螢幕顏色拾取器

一 用到的關鍵api及說明 1 函式功能 該函式檢索指定座標點的畫素的rgb顏色值。函式原型 colorref getpixel hdc hdc,int nxpos,int nypos 2 函式功能 捕捉滑鼠訊息 函式原型 hwnd setcapture hwnd hwnd hwnd 當前執行緒裡要...

qt 獲取螢幕控制代碼 Qt開源作品23 顏色拾取器

在做很多專案的ui介面的時候,相信絕大部分人都有過抄襲別人的ui介面尤其是顏色的時候,畢竟十個程式設計師九個沒有審美,或者說審美跟一坨屎一樣,大家主要的精力以及擅長點都是在寫功能實現具體功能上面,這個事情怎麼說呢,這確實是程式設計師的主要職責,但是在大部分的小公司,ui也都是需要程式設計師自己去搞定...