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

bitmap問題,可以幫我把這個動畫中加上背景嗎?

尚未結案
Marco-SUN
一般會員


發表:5
回覆:8
積分:2
註冊:2004-04-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-24 15:29:31 IP:202.175.xxx.xxx 未訂閱
我跟書上寫了個火炎動畫,卻背景只有黑色......我想有其他背景. 這本畫內容非淺,我連日思考研究,弄得消化不良, 邏請高手指點﹗    主要原代碼:    var     w,h: Integer;     Alpha: Integer;     Firemat: Array of byte;     Pallette: Array [0..(256*3-1)] of Byte;     SrcBMP: TBitmap;     FireBMP: TBitmap;     procedure init;     procedure Render; ------------------------------------ procedure Tflame.init; var    i :integer; begin      SrcBMP := TBitmap.Create;      SrcBMP.Assign(form1.Image1.Picture.Bitmap);      SrcBMP.PixelFormat := pf24bit;         fireBMP := TBitmap.Create;      fireBMP.Assign(form1.Image1.Picture.Bitmap);      fireBMP.PixelFormat := pf24bit;         w := FireBMP.Width;      h := FireBMP.Height;      Alpha := 30;      SetLength(Firemat,w*(h+10));         Randomize;         for i := 0 to 85 do      begin           Pallette[i*3] := 0;           Pallette[i*3+1] := 0;           Pallette[i*3+2] := i*3;      end;      for i := 1 to 85 do      begin           Pallette[(85+i)*3] := 0;           Pallette[(85+i)*3+1] := i*3;           Pallette[(85+i)*3+2] := 255;      end;      for i := 1 to 85 do      begin           Pallette[(170+i)*3] := i*3;           Pallette[(170+i)*3+1] := 255;           Pallette[(170+i)*3+2] := 255;      end;     end;    Procedure Tflame.Render; var    i,k,x,y,pos :Integer;    firechance :Integer;    Firewidth: Integer;    r,g,b,clr: Integer;    src,dest: PByteArray; begin      FireChance := 10;      for i := 0 to w-1 do          Firemat[w+i] := 0;         x := 0;      while x
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-27 13:29:19 IP:218.80.xxx.xxx 未訂閱
代碼有錯,編譯不過,爲了方便閲讀,代碼用“code”標簽包起來     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听 發表人 - mustapha.wang 於 2004/04/27 13:32:33 發表人 - mustapha.wang 於 2004/04/27 13:33:59
------
江上何人初见月,江月何年初照人
Marco-SUN
一般會員


發表:5
回覆:8
積分:2
註冊:2004-04-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-27 22:49:30 IP:202.175.xxx.xxx 未訂閱
也許真的是代碼有錯吧﹗ 但主要概念我也明白了,但有個問題還是要大家請教。 在一個image上有圖片(bitmap),如果在圖片上畫一個球移動,問題是這個球的軌跡如何變回原本的圖片背景呢?
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-29 13:22:28 IP:218.80.xxx.xxx 未訂閱
基本上有两种方法: 1.每次移动后,按从下到上的顺序把每层的图画一遍,为了避免闪烁,全部画到一个看不见的canvas上,画完后,在贴到显示的canvas上。 2.方法1可能慢,可以记住球覆盖掉的背景,然后球每次移动时,先还原背景/保存新背景/画球。     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
Marco-SUN
一般會員


發表:5
回覆:8
積分:2
註冊:2004-04-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-29 17:22:37 IP:202.175.xxx.xxx 未訂閱
我大概想到辨法了。謝謝~ 但是不知為什麼這本書所寫的代碼是把整個image每行記錄,然後把整個畫面的r,g,b的值調為0(即黑色),最後才畫上想要的東西,就是因為這樣,所以每個動作中背景也是黑色,最氣憤的是書中顯示的圖片是有背景的.............>,< 發表人 - Marco-SUN 於 2004/04/29 17:28:15
系統時間:2024-07-01 2:52:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!