如何讓游標在"非主視窗"時,也能將所在座標的RGB值傳回? |
答題得分者是:ChungLin.Net
|
howdz
一般會員 發表:17 回覆:12 積分:5 註冊:2003-12-16 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
howdz
一般會員 發表:17 回覆:12 積分:5 註冊:2003-12-16 發送簡訊給我 |
|
ChungLin.Net
中階會員 發表:2 回覆:33 積分:52 註冊:2006-07-26 發送簡訊給我 |
以前寫的小程式,不知有沒符合你的需求
需要二個 StaticText 取名為 stXY , stRGB
一個 Bevel 取名為 blPattern 一個 Timer ,
將下面程式段放於 Timer 中執行,Timer Interval 值設為10
<textarea class="cpp" rows="10" cols="60" name="code"> POINT xy; if(GetCursorPos(&xy)) { Graphics::TBitmap *Bmp = new Graphics::TBitmap(); Bmp->Width=1; Bmp->Height=1; StretchBlt(Bmp->Canvas->Handle,0,0,1,1,GetDC(0),xy.x,xy.y,1,1,SRCCOPY); TColor ptr=(TColor)Bmp->Canvas->Pixels[0][0]; this->Canvas->Brush->Color = (TColor)RGB((ptr & 0x000000FF),(ptr & 0x0000FF00) >> 8,(ptr & 0x00FF0000) >> 16); this->Canvas->FillRect(Rect(blPattern->Left 1,blPattern->Top 1,blPattern->Width blPattern->Left - 1,blPattern->Height blPattern->Top - 1)); stXY->Caption = stXY->Caption.sprintf("座標:(M,M)",xy.x,xy.y); stRGB->Caption = stRGB->Caption.sprintf("R:%d G:%d B:%d",(ptr & 0x000000FF) ,(ptr & 0x0000FF00) >> 8 ,(ptr & 0x00FF0000) >> 16); delete Bmp; } </textarea>
------
無限的想像,無盡的延伸。 |
howdz
一般會員 發表:17 回覆:12 積分:5 註冊:2003-12-16 發送簡訊給我 |
|
ChungLin.Net
中階會員 發表:2 回覆:33 積分:52 註冊:2006-07-26 發送簡訊給我 |
發現一個 API 可以把程式寫的簡單一點
<textarea class="cpp" rows="10" cols="60" name="code"> POINT xy; if(GetCursorPos(&xy)) { COLORREF cRGB = GetPixel(GetDC(0),xy.x,xy.y); this->Canvas->Brush->Color = cRGB; this->Canvas->FillRect(Rect(blPattern->Left 1,blPattern->Top 1,blPattern->Width blPattern->Left - 1,blPattern->Height blPattern->Top - 1)); stXY->Caption = stXY->Caption.sprintf("座標:(M,M)",xy.x,xy.y); stRGB->Caption = stRGB->Caption.sprintf("R:%d G:%d B:%d",(cRGB & 0x000000FF) ,(cRGB & 0x0000FF00) >> 8 ,(cRGB & 0x00FF0000) >> 16); } </textarea>
------
無限的想像,無盡的延伸。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |