線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:931
推到 Plurk!
推到 Facebook!

image取一条线上所有点的值(区别)

尚未結案
chenliyan163
一般會員


發表:30
回覆:30
積分:12
註冊:2003-09-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-17 13:09:44 IP:61.175.xxx.xxx 未訂閱
procedure LineDDAProc(x,y:integer;dwParam:DWORD) ; stdcall ; var cl : integer ; begin cl:=GetBValue(Form1.Image1.Canvas.Pixels[x,y]) ; form1.Memo1.Lines.add(format('X=%d, y=%d, Color=%d',[x,y,intToStr(cl)])) ; end ; procedure TForm1.BitBtn1Click(Sender: TObject); begin LineDDA(iStartX,iStartY,iOldX,iOldY,@LineDDAProc,0) ; end; 上面所取的值怎么越黑的地方反而值会越大? 下面这个直接取的值怎么越黑反而越小?这两者怎么样才可以等同? cl:=GetBValue(Form1.Image1.Canvas.Pixels[x,y]) ;
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-17 14:34:14 IP:211.23.xxx.xxx 未訂閱
引言: 上面所取的值怎么越黑的地方反而值会越大? 下面这个直接取的值怎么越黑反而越小?这两者怎么样才可以等同? cl:=GetBValue(Form1.Image1.Canvas.Pixels[x,y]) ;
基本上顏色的表示是用 RGB R=255, G=255, B=255 時表示白色 R=0, G=0, B=0 時表示黑色. 所以顏色越黑, 應該 B 值會比較小. 當然, 這樣的前提是 R和G 不變. ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
chenliyan163
一般會員


發表:30
回覆:30
積分:12
註冊:2003-09-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-17 17:23:56 IP:61.175.xxx.xxx 未訂閱
谢谢aquarius 但为什么下面的程序所取出来越黑的地方反而值越大呢? procedure LineDDAProc(x,y:integer;dwParam:DWORD) ; stdcall ; var cl : integer ; begin cl:=GetBValue(Form1.Image1.Canvas.Pixels[x,y]) ; form1.Memo1.Lines.add(format('X=%d, y=%d, Color=%d',[x,y,intToStr(cl)])) ; end ; procedure TForm1.BitBtn1Click(Sender: TObject); begin LineDDA(10,10,10,20,@LineDDAProc,0) ;//这等于是取从10-20直线上的点, end;
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-18 09:29:57 IP:211.23.xxx.xxx 未訂閱
把 R 和 G 的值也印出來看. 顏色是由 RGB 構成. 你只看 B , 不免以偏概全. ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
系統時間:2024-05-08 9:41:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!