canvas合併bmp圖的問題 |
尚未結案
|
nocturnal
一般會員 發表:10 回覆:1 積分:2 註冊:2004-08-07 發送簡訊給我 |
我的程式主要是利用當使用者在listview上觸發click事件後
我便會把跟他點的這張圖(listview的item)有關的圖都合成一張bmp(用橫向append的方式)
我本來把Image元件放在一個Panel上 顯示都很正常
後來發現append產生的圖會超過panel大小
所以改放到scrollbox上
那個item對應到的tc[TC_index].FC_num是我總共要append的圖張數 沒想到卻出現一個很詭異的情況
就是我先點listview上的哪個item
比如我點了第二個 他的tc[1].FC_num是3
之後不管我點哪一個
都只會出現append三張的圖
但是scrollbox的scroball有偵測到Image大小改變而對映產生scroball
也就是說如果我先點FC_num最大的那個item
再去點其他的就會正常顯示
不然我第一次點就好像一個upper bound一樣
只要FC_num超過這個數字的後面的圖都顯示不出來 我覺得應該是我合併bmp的地方有寫錯了
不知道有誰能幫我看看 我的canvas部分是不是寫錯了
我是要把讀進來的jpg檔先縮小成80 *64 然後再合併成一個橫向的bmp圖
例如有5張 則合成的bmp會是400 * 64這樣的bmp圖 下面是我的部分code
=========================================================================== void __fastcall TForm1::ListView1Click(TObject *Sender)
{
int TC_index ;
int DBindex ; TC_index = ListView1->Selected->Index ;
Image17->Width = (80 * tc[TC_index].FC_num) ;
Image17->Height = 64 ; for (int j=0 ; j < tc[TC_index].FC_num ; j )
{
Graphics::TBitmap *bmpSrc=new Graphics::TBitmap;
Graphics::TBitmap *bmpDst=new Graphics::TBitmap; TJPEGImage *jpg=new TJPEGImage();
jpg->Scale=jsEighth; DBindex = tc[TC_index].fc[j].index[0];
jpg->LoadFromFile(cluster_ptr->photo_ptr[DBindex]->source);
bmpSrc->Assign(jpg); bmpDst->Width=80;
bmpDst->Height=64;
SetStretchBltMode(bmpDst->Canvas->Handle, STRETCH_HALFTONE);
bmpDst->Canvas->CopyMode=cmSrcCopy;
bmpDst->Canvas->CopyRect(Rect(0, 0, bmpDst->Width, bmpDst->Height),
bmpSrc->Canvas, Rect(0, 0, bmpSrc->Width, bmpSrc->Height));
Image17->Canvas->CopyRect(Rect(80*j,0,80*(j 1)-1,64),bmpDst->Canvas,Rect(0,0,80,64)); delete jpg;
jpg = 0;
delete bmpSrc;
bmpSrc = 0;
delete bmpDst;
bmpDst = 0;
}
} 發表人 - nocturnal 於 2004/08/15 14:53:53 發表人 - nocturnal 於 2004/08/15 15:34:04
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
nocturnal 您好: 您似乎沒有改到Image中Bitmap的大小,所以才會一直是您第一次設定的樣子。
建議做法如下,希望有幫助。
< class="code">
TC_index = ListView1->Selected->Index ;
Image17->Picture->Bitmap->Width = (80 * tc[TC_index].FC_num) ;
Image17->Picture->Bitmap->Height = 64 ; RichTop 敬上 =====*****
把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題!
=====#####
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |