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

請問我的程式哪裡錯了?

尚未結案
nicolas
一般會員


發表:39
回覆:40
積分:15
註冊:2004-05-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-14 13:07:46 IP:61.219.xxx.xxx 未訂閱
請問我的程式哪裡錯了?   
   C:=0;
   Image1.Picture.Bitmap.PixelFormat:=pf8bit;
   Image2.Picture.Bitmap.PixelFormat:=pf24bit;
   GetPaletteEntries(Image1.Picture.Bitmap.Palette,0,256,PAL);
   FOR Y:=0 TO IMAGE1.Picture.Bitmap.height-1 DO
   BEGIN
       P:=Image1.Picture.Bitmap.ScanLine[Y];
       Q:=IMAGE2.Picture.Bitmap.ScanLine[Y];
       FOR X:=0 TO IMAGE1.Picture.Bitmap.WIDTH-1 DO
       BEGIN
            IF X Y=0 THEN C:=P[X];
            IF P[X]<>C THEN
            BEGIN
               Q[3*X 1]:=PAL[P[X]].peGreen;
                    Q[3*X 2]:=PAL[P[X]].peRed;
                    Q[3*X 3]:=PAL[P[X]].peBlue;
            END;            
       END;
   END;
為何紅色部分要顛倒顏色才會對?
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-26 14:30:41 IP:211.76.xxx.xxx 未訂閱
nicolas 您好: Q[3X ] : blue Q[3X 1] : green Q[3X 2] : red 因陣列索引是從零開始,您從1開始所以所有的順序就順延了一個,才會有您覺得奇怪的情形發生。 RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-26 14:57:01 IP:221.169.xxx.xxx 未訂閱
nicolas:顏色ScanLine讀進來順序是R、G、B 你的程式處理卻是以G、R、B處理所以當然要顛倒才對。 RichTop大所說索引也是你要注意的地方!
  FOR X:=0 TO IMAGE1.Picture.Bitmap.WIDTH-1 DO
    BEGIN
      IF X Y=0 THEN C:=P[X];
        IF P[X]<>C THEN
        BEGIN
          Q[3*X]:=PAL[P[X]].peRed;
          Q[3*X 1]:=PAL[P[X]].peGreen;
          Q[3*X 2]:=PAL[P[X]].peBlue;
          X=X 3;
        END;            
    END;
請參考! Andy Chang 發表人 - andychang1690 於 2004/09/26 15:02:07 發表人 - andychang1690 於 2004/09/26 21:32:34
------
Andy Chang
系統時間:2024-04-26 9:29:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!