有關image問題 |
尚未結案
|
sunmi629
一般會員 發表:5 回覆:6 積分:2 註冊:2003-07-04 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
你安排一image,讀進一張圖,一個TrackBar,把TrackBar的max設255,min設0,position設255 (design time) 在TrackBar 的onChange的event里寫下以下的程式就可以實現了
(以下假定原始圖為的image1,變色後draw在form1的canvas上,拉把TrackBar1)
procedure TForm1.TrackBar1Change(Sender: TObject); type PRGBTripleArray = ^TRGBTripleArray; TRGBTripleArray = array[0..32767] of TRGBTriple; VAR Step,X,Y : INTEGER; Sbmp,Dbmp : TBitmap; Row, BaseRow: PRGBTripleArray; begin Step:=TrackBar1.Position; sbmp:=TBitmap.create; dbmp:=TBitmap.create; sbmp.Assign(image1.Picture.Bitmap); dbmp.Assign(sbmp); for y := 0 to (sbmp.Height - 1) do begin BaseRow := sbmp.Scanline[y]; Row := dbmp.Scanline[y]; for x := 0 to (sbmp.Width - 1) do begin Row[x].rgbtRed := trunc( (step/trackbar1.Max) * BaseRow[x].rgbtRed); Row[x].rgbtGreen := trunc( (step/trackbar1.Max) * BaseRow[x].rgbtGreen); Row[x].rgbtBlue := trunc( (step/trackbar1.Max) * BaseRow[x].rgbtBlue); end; end; Form1.canvas.Draw(300, 0, dbmp); InvalidateRect(Form1.Handle, nil, False); RedrawWindow(Form1.Handle, nil, 0, RDW_UPDATENOW); Freeandnil(sbmp); Freeandnil(dbmp); end; |
sunmi629
一般會員 發表:5 回覆:6 積分:2 註冊:2003-07-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |