如何取得 ClBlue 在 pf8bit Bitmap 上的 8 bit 色值。 |
尚未結案
|
dan59314
中階會員 發表:121 回覆:107 積分:86 註冊:2002-08-16 發送簡訊給我 |
各位先進, 我宣告了一個 pf8bit 的 TBitmap,然後在上面用 clBlue 畫了個圓,因為要作 pixel 判斷用,我必須逐一 pixel 取值,看是否等於 clBlue ,可是因為 scanline 取得的是 8bit,但是我圖的顏色是 clBlue TColor,請問我要怎麼可以知道我取得的 pixel 色值是否就是我當初畫的顏色 clBlue 呢? 換句話說,就是我要怎麼知道 TColor 的 clBlue 轉成 pf8bit 後的色值是什麼呢?
Thanks. :) 軟還要更軟,我的Artwork
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27674 Chinese Girl in Rhino3D
http://rhino3d.com/gallery/figure/girl.htm
|
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
fy 您好..我以前也曾經為這個問題煩惱..不過還是沒解決..今天看了您的問題
就想要自己寫一隻程式來測試(明天還要上課 ><)...如下圖..
程式下載點...
http://delphi.ktop.com.tw/loadfile.php?TOPICID=15478489&CC=346171
使用方法..在左上的色塊選擇要的顏色(我已經選擇了CLBLUE)
CLBLUE其實就是純藍色..以下是證明..
先按"用TCOLOR寫顏色8BIT"..在按"用SCANLINE讀顏色24BIT"
結果傳回的如下圖..
如果是按下"用SCANLINE讀顏色8BIT"..則是傳回252
另外我又寫了一個256色跟RGB的對照表..按"顯示256色盤的RGB值"
可是..看那些數字排列..我實在不知道那是怎麼轉的..好像不是線性關係..
不過我想針對您問題的部分..應該已經獲得解答了..
如果有大大知道如何做這個轉換公式..也麻煩PO上來..謝謝.. 發表人 - geniustom 於 2004/05/04 05:56:10
|
dan59314
中階會員 發表:121 回覆:107 積分:86 註冊:2002-08-16 發送簡訊給我 |
Thanks to geniustom,
引言:可是..看那些數字排列..我實在不知道那是怎麼轉的..好像不是線性關係.. 不過我想針對您問題的部分..應該已經獲得解答了.. 如果有大大知道如何做這個轉換公式..也麻煩PO上來..謝謝..我的問題還是沒有解決,跟你的問題是一樣的。我也是事後 scanline 得知 clBlue 是 252......,但是如果要動態改變顏色,畫完又要去比對的時候,就不知道該和那個色值比對了。 軟還要更軟,我的Artwork http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27674 Chinese Girl in Rhino3D http://rhino3d.com/gallery/figure/girl.htm |
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
那是調色盤的對照表,ScanLine掃出來其實並不是顏色,而是調色盤所在的位
置!!
function GetIndex(Bmp:TBitmap;Color:TColor):Byte; var B : Byte; P : PByteArray; begin P:=Bmp.ScanLine[0]; B:=P[0]; //先將0,0的代碼記錄 Bmp.Canvas.Pixels[0,0]:=Color; //使用Pixels填入"顏色" Result:=P[0]; //傳回Pixels的代碼 P[0]:=B; //將0,0恢復之前的顏色 end;學而時習之不亦樂乎! |
dan59314
中階會員 發表:121 回覆:107 積分:86 註冊:2002-08-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |