如何將三張24bit的影像(BMP)同時畫在一張影像上?? |
尚未結案
|
aoi525
一般會員 發表:5 回覆:5 積分:2 註冊:2004-12-28 發送簡訊給我 |
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
Londer
一般會員 發表:5 回覆:32 積分:7 註冊:2003-01-08 發送簡訊給我 |
呵呵~因為大大您的題目問的不是很清楚~
所以小弟『假設』大大您是要將 Image1~Image3 由上而下畫在 Image4 上~
而且再假設 Image1 ~ Image3 是同寬的~如此的話就這麼寫就行了 < class="code">
Image4->Width=Image1->Width;
Image4->Height=Image1->Height Image2->Height Image3->Height; Image4->Picture->Bitmap->Width=Image4->Width;
Image4->Picture->Bitmap->Height=Image4->Height; Image4->Picture->Bitmap->Canvas->Draw(0,0,Image1->Picture->Bitmap);
Image4->Picture->Bitmap->Canvas->Draw(0,Image1->Height,Image2->Picture->Bitmap);
Image4->Picture->Bitmap->Canvas->Draw(0,Image1->Height Image2->Height,Image3->Picture->Bitmap);
不知道這個是不是大大您要的~不是的話再說吧
|
aoi525
一般會員 發表:5 回覆:5 積分:2 註冊:2004-12-28 發送簡訊給我 |
|
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
aoi525
一般會員 發表:5 回覆:5 積分:2 註冊:2004-12-28 發送簡訊給我 |
|
aoi525
一般會員 發表:5 回覆:5 積分:2 註冊:2004-12-28 發送簡訊給我 |
引言:這是我寫的程式碼:Image2是一張純紅的影像(24bit)),Image3是一張純綠的影像(24bit),Image3是一張純藍的影像(24bit)。我想將三張影像的同一點的像素值相加後畫到STLBitmap上… 每點像素值相加後存到RGB_Image[j][i]如下,但最後畫出來的圖是錯的??請各位大大幫忙解答,看哪出了錯,謝啦~~~引言: aoi525你好: 設定Canvas中的CopyMode為cmSrcAnd,然後用CopyRect就可以完成: 以下是我的工具做出的實例... 不好意思哦!我沒有看到你的實例…有沒有程式碼可以讓我參考啊??謝謝~~~ RGB_Image[j][i] = R_Image[j][i] + G_Image[j][i] + B_Image[j][i]; //*******************************程式碼**************************// int PicX_R=0, PicY_R=0, PicX_G, PicY_G, PicX_B, PicY_B; int x=0, y=0, i=0, j=0; PicX_R = Form1->Image2->Picture->Width; PicY_R = Form1->Image2->Picture->Height; PicX_G = Form1->Image3->Picture->Width; PicY_G = Form1->Image3->Picture->Height; PicX_B = Form1->Image4->Picture->Width; PicY_B = Form1->Image4->Picture->Height; R_Bitmap->LoadFromFile("STLPitcture\\STL_RImageTest.bmp"); R_Image = (Byte**)new Byte*[PicY_R]; for( y=0; yScanLine[y]; G_Bitmap->LoadFromFile("STLPitcture\\STL_GImageTest.bmp"); G_Image = (Byte**)new Byte*[PicY_G]; for( y=0; yScanLine[y]; B_Bitmap->LoadFromFile("STLPitcture\\STL_BImageTest.bmp"); B_Image = (Byte**)new Byte*[PicY_B]; for( y=0; yScanLine[y]; RGB_Image = (Byte**)new Byte*[PicY_R]; for( y=0; yHeight; j++ ) for( i=0;i |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
看來我還是寫一個例子好了...反正只有幾行
(其實你自已試也試得出來吧,步驟都說了...) 放三個 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=19698668&CC=440552"> Button的OnClick事件如下(也就是全部的程式碼)
void __fastcall TForm1::Button1Click(TObject *Sender) { TRect Area(0,0,Image1->Width,Image1->Height); Image1->Canvas->CopyMode = cmSrcAnd; Image1->Canvas->CopyRect(Area,Image2->Canvas,Area); Image1->Canvas->CopyRect(Area,Image3->Canvas,Area); }執行結果: |
aoi525
一般會員 發表:5 回覆:5 積分:2 註冊:2004-12-28 發送簡訊給我 |
引言: 看來我還是寫一個例子好了...反正只有幾行 (其實你自已試也試得出來吧,步驟都說了...) 放三個 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=19698668&CC=440552"> Button的OnClick事件如下(也就是全部的程式碼)謝謝這位大大的幫忙,不過畫出來的圖還是怪怪的,不是我要的。不過真是感謝你呢~~~void __fastcall TForm1::Button1Click(TObject *Sender) { TRect Area(0,0,Image1->Width,Image1->Height); Image1->Canvas->CopyMode = cmSrcAnd; Image1->Canvas->CopyRect(Area,Image2->Canvas,Area); Image1->Canvas->CopyRect(Area,Image3->Canvas,Area); }執行結果: |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |