全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:893
推到 Plurk!
推到 Facebook!

如何將三張24bit的影像(BMP)同時畫在一張影像上??

尚未結案
aoi525
一般會員


發表:5
回覆:5
積分:2
註冊:2004-12-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-04 20:00:20 IP:140.124.xxx.xxx 未訂閱
請問一下: 如何將三張同大小24bit(.bmp) 的彩色影像,同時畫在一張影像呢?? 謝謝~~~~~
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-04 21:05:56 IP:221.169.xxx.xxx 未訂閱
怎樣叫做「同時畫在一張影像上」? 由左而右三張貼在一起? 三張影像作&運算?
Londer
一般會員


發表:5
回覆:32
積分:7
註冊:2003-01-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-04 23:18:01 IP:218.164.xxx.xxx 未訂閱
呵呵~因為大大您的題目問的不是很清楚~ 所以小弟『假設』大大您是要將 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-04 23:46:41 IP:140.124.xxx.xxx 未訂閱
不好意思啊!問題不是很清楚。 小弟有三張影像Image1~3,(.bmp) (皆為24bit的大小同為1024 *768) 想將Image1~3 每張同一點的像素值相加後畫到對應的Iamge4上並秀出來(大小同為1024*768) 。不曉的這樣說是不是清楚一點了~~~謝謝各位高手幫忙。
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-05 00:18:18 IP:211.76.xxx.xxx 未訂閱
aoi525你好:    設定Canvas中的CopyMode為cmSrcAnd,然後用CopyRect就可以完成: 以下是我的工具做出的實例...    
aoi525
一般會員


發表:5
回覆:5
積分:2
註冊:2004-12-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-05 01:01:22 IP:140.124.xxx.xxx 未訂閱
引言: aoi525你好: 設定Canvas中的CopyMode為cmSrcAnd,然後用CopyRect就可以完成: 以下是我的工具做出的實例... 不好意思哦!我沒有看到你的實例…有沒有程式碼可以讓我參考啊??謝謝~~~
aoi525
一般會員


發表:5
回覆:5
積分:2
註冊:2004-12-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-05 20:43:17 IP:140.124.xxx.xxx 未訂閱
引言:
引言: aoi525你好: 設定Canvas中的CopyMode為cmSrcAnd,然後用CopyRect就可以完成: 以下是我的工具做出的實例... 不好意思哦!我沒有看到你的實例…有沒有程式碼可以讓我參考啊??謝謝~~~
這是我寫的程式碼:Image2是一張純紅的影像(24bit)),Image3是一張純綠的影像(24bit),Image3是一張純藍的影像(24bit)。我想將三張影像的同一點的像素值相加後畫到STLBitmap上… 每點像素值相加後存到RGB_Image[j][i]如下,但最後畫出來的圖是錯的??請各位大大幫忙解答,看哪出了錯,謝啦~~~
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;iWidth; i++ )
               RGB_Image[j][i]=0;             for( j=0; jHeight; j++ )
         {
            for( i=0; iWidth; i++ )
            {
               RGB_Image[j][i] = R_Image[j][i] + G_Image[j][i] +
                                 B_Image[j][i];
            }
         }             int aa=0;
         for( j=0; jPicture->Height; j++ )
         {
            for( i=0; iWidth; i++ )
            {
               aa=RGB_Image[j][i];
               ::SetPixel(STLBitmap->Canvas->Handle, j, i, 
                          RGB(aa, 0, 0) );
            }
         }    
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-05 22:24:47 IP:221.169.xxx.xxx 未訂閱
RGB()函式的三個參數應該都是要0~255的值, 你給他的第一個參數就爆掉了 STLBitmap的型態是什麼? 如果是TImage,為什麼你不直接讓RGB_Image指到這個物件就好了?
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-05 22:52:13 IP:211.76.xxx.xxx 未訂閱
看來我還是寫一個例子好了...反正只有幾行 (其實你自已試也試得出來吧,步驟都說了...) 放三個 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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-06 14:36:03 IP:140.124.xxx.xxx 未訂閱
引言: 看來我還是寫一個例子好了...反正只有幾行 (其實你自已試也試得出來吧,步驟都說了...) 放三個 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);
}
執行結果:
謝謝這位大大的幫忙,不過畫出來的圖還是怪怪的,不是我要的。不過真是感謝你呢~~~
系統時間:2024-07-04 5:11:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!