想要在灰階圖上畫彩色! |
尚未結案
|
okeyla
一般會員 發表:51 回覆:20 積分:19 註冊:2003-06-12 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
okeyla您好:
引言: 怎麼試都失敗... How to do that???您是怎麼試的?? 方便將您的code貼上來嗎? 下面的範例供您參考 TColor DrawColor; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::GrayClick(TObject *Sender) { Image1->Picture->LoadFromFile("0.bmp"); Byte* ptr; for (int y=0;y順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~> 發表人 - |
brook
資深會員 發表:57 回覆:323 積分:371 註冊:2002-07-12 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
Okeyla 您好: 依照您描述的,可能的問題所在就是您所引進的圖檔格式了。
C Builder的Image->Picture->LoadFromFile(.);其實可以讀入不同格式的圖檔,
當然相關的引入檔也要有。但是如果不是標準的RGB形式的bmp,雖然可以讀入並顯示,
但是就無法透過Canvas來修改了!
所以一種可能的方法就是:先將它轉成標準的RGB形式的bitmap,程式碼如下:
Image1->Picture->LoadFromFile("0.bmp");
// 加入下列程式碼
Graphics::TBitmap *bmp= new Graphics::TBitmap;
try { bmp->Height=Image1->Picture->Height;
bmp->Width =Image1->Picture->Width;
bmp->Canvas->Draw(0, 0, Image1->Picture->Graphic); //先將影像複製到bmp
Image1->Height=bmp->Height;
Image1->Width =bmp->Width;
Image1->Picture->Assign((Graphics::TBitmap*)bmp); //回存至Image1
}
__finally
{ delete bmp;
} 另外在使用ScanLine[.]之前最好先宣告該Bitmap的色彩格式,否則可能的RGB顏色改變
就不是您預期的了。
Image1->Picture->Bitmap->PixelFormat = pf24bit;
順便提供一下RGB->Gray的轉換式`:
Gray = 0.299*R 0.587*G 0.114*B
而灰階就是該pixel的RGB顏色值:
R = G = B = Gray 至於哪一個是R,G或B,相信很容易可以試出來的! 希望能對您的問題有幫助!
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |