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

怎麼把8bit的圖片丟到32bit的畫布上?

答題得分者是:senso
encoref70036
一般會員


發表:29
回覆:47
積分:15
註冊:2011-05-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-07-27 13:22:40 IP:111.252.xxx.xxx 訂閱
原始圖片 是GIF的圖檔

開了以後變成這樣

好像是這段程式碼的關係 (Open裡面)
if (Child->Image1->Picture->Bitmap->PixelFormat == pf8bit)//8位元丟給32位元
{
nBitmap->Assign(Child->Image1->Picture);
tempBitmap->Assign(Child->Image1->Picture);
//ShowMessage(nBitmap->PixelFormat);
pBitmap->PixelFormat = NewPF;
pBitmap->Height = nBitmap->Height;
pBitmap->Width = nBitmap->Width;
for (int y = 0;y < nBitmap->Height;y )
{
ptr1 = (Byte*)nBitmap->ScanLine[y];
aptr1 = (Byte*)pBitmap->ScanLine[y];
for (int x = 0;x < nBitmap->Width;x )
{
aptr1[cp*x] = ptr1[x];
aptr1[cp*x 1] = ptr1[x];
aptr1[cp*x 2] = ptr1[x];
}
}
Child->Image1->Picture->Assign(pBitmap);
Child->Image1->Canvas->Draw(0,0,Child->Image1->Picture->Bitmap);
}
如果沒有這段 顏色正常 但是我想把8bit的圖片丟給32bit的畫布上
請問是哪裡寫錯呢 麻煩大俠了 下面附上程式
p.s NewPF就是pf32bit cp的值是4
編輯記錄
encoref70036 重新編輯於 2011-07-26 23:24:00, 註解 無‧
encoref70036 重新編輯於 2011-07-26 23:28:49, 註解 無‧
senso
高階會員


發表:5
回覆:126
積分:226
註冊:2003-11-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-07-27 18:06:29 IP:61.219.xxx.xxx 訂閱
8bit不一定是256gray,也可能是256color
要取得真正的顏色請挖調色盤
參考
http://delphi.ktop.com.tw/board.php?cid=168&fid=921&tid=55371
encoref70036
一般會員


發表:29
回覆:47
積分:15
註冊:2011-05-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-07-27 18:55:22 IP:111.252.xxx.xxx 訂閱
謝謝您 我試試看 我先結案 有問題我之後再po新的好了
編輯記錄
encoref70036 重新編輯於 2011-07-27 06:07:45, 註解 無‧
encoref70036 重新編輯於 2011-07-27 06:19:56, 註解 無‧
系統時間:2017-10-20 0:40:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!