BMP 顏色顯示問題 |
答題得分者是:RaynorPao
|
hjlin
一般會員 發表:63 回覆:48 積分:22 註冊:2003-02-11 發送簡訊給我 |
請問一個有關BMP顏色顯示的問題
A.bmp 為 W:256 H:224 顏色:256色 void __fastcall TForm1::Open_btnClick(TObject *Sender)
{
Image1->Picture->LoadFromFile("A.bmp");
Image1->Stretch=true;
}
但經過下面程式後,B.bmp 顏色竟變成 64K 色
void __fastcall TForm1::Merge_btnClick(TObject *Sender)
{
Image3->Width=Image1->Width;
Image3->Height=Image1->Height;
Image3->Stretch=true; SetStretchBltMode(Image3->Canvas->Handle, STRETCH_HALFTONE);
Image3->Canvas->CopyMode=cmSrcCopy;
Image3->Canvas->CopyRect(Rect(0, 0, Image3->Width, Image3->Height),
Image1->Canvas, Rect(0, 0, Image1->Width, Image1->Height));
Graphics::TBitmap *tmp1=new Graphics::TBitmap;
tmp1->Assign(Image2->Picture->Graphic);
tmp1->SaveToFile("B.bmp");
delete tmp1;
}
請問是哪裡出錯了?我要出來也是 256 色的~~ 發表人 - hjlin 於 2003/07/17 16:19:57
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
hjlin
一般會員 發表:63 回覆:48 積分:22 註冊:2003-02-11 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
hjlin您好:
引言: 我現在是從Image1 LOAD圖檔進來,然後利用image copy方式顯示在Image3上面。這樣就會有問題了~~ 我這程式的功能就是要從Image1 LOAD進來到Image3 .....那改成下面這樣可以嗎?? void __fastcall TForm1::Open_btnClick(TObject *Sender) { Image1->Picture->LoadFromFile("A.bmp"); Image1->Stretch=true; } //------------------------------------------------------- void __fastcall TForm1::Merge_btnClick(TObject *Sender) { Image3->Picture->Assign(Image1->Picture); }順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> |
hjlin
一般會員 發表:63 回覆:48 積分:22 註冊:2003-02-11 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
hjlin
一般會員 發表:63 回覆:48 積分:22 註冊:2003-02-11 發送簡訊給我 |
阿泰:不好意思,可能是我表達的不好,我再把我的問題說一次,我會盡量說清楚一點~哈! 我在Image1 LOAD一圖檔(256色),然後我是利用
Image3->Width=Image1->Width;
Image3->Height=Image1->Height;
SetStretchBltMode(Image3->Canvas->Handle, STRETCH_HALFTONE);
Image3->Canvas->CopyMode=cmSrcCopy;
Image3->Canvas->CopyRect(Rect(0, 0, Image3->Width, Image3->Height),
Image1->Canvas, Rect(0, 0, Image1->Width, Image1->Height));
上面指令將 Image1 的圖檔 copy 到 Image3 上面(我會這麼用是因為我後面要用這方法來Merge兩個圖檔),所以現在只需要幫我解決紅色部分,要如何修正,才不至於讓我的圖檔變成 64K 顏色...希望你看的懂~~
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問一個有關BMP顏色顯示的問題 A.bmp 為 W:256 H:224 顏色:256色 void __fastcall TForm1::Open_btnClick(TObject *Sender) { Image1->Picture->LoadFromFile("A.bmp"); Image1->Stretch=true; } 但經過下面程式後,B.bmp 顏色竟變成 64K 色 void __fastcall TForm1::Merge_btnClick(TObject *Sender) { Image3->Width=Image1->Width; Image3->Height=Image1->Height; Image3->Stretch=true; SetStretchBltMode(Image3->Canvas->Handle, STRETCH_HALFTONE); Image3->Canvas->CopyMode=cmSrcCopy; Image3->Canvas->CopyRect(Rect(0, 0, Image3->Width, Image3->Height), Image1->Canvas, Rect(0, 0, Image1->Width, Image1->Height)); Graphics::TBitmap *tmp1=new Graphics::TBitmap; tmp1->Assign(Image2->Picture->Graphic); tmp1->SaveToFile("B.bmp"); delete tmp1; } 請問是哪裡出錯了?我要出來也是 256 色的~~ hjlin 你好: (1)我的寫法跟你的是一樣的,但是~~我所得到的結果,卻不會像你的圖形失真 那麼的嚴重 (2)我已經將執行的結果寄給你參考,先看看吧 (3)會變成 64K 的原因,是因為 VGA 設定的原因,你可以試試看更改 VGA 的色 彩設定值,得到的結果又會不一樣-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |