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

canvas合併bmp圖的問題

尚未結案
nocturnal
一般會員


發表:10
回覆:1
積分:2
註冊:2004-08-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-15 13:23:03 IP:220.135.xxx.xxx 未訂閱
我的程式主要是利用當使用者在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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-25 08:11:09 IP:221.169.xxx.xxx 未訂閱
看不出來問題會出現在哪兒 可以把完整的source放上來嗎? 至少也要解釋一下 tc, cluster_ptr 是什麼東西吧 建議進debug模式,去追迴圈內程式行為是不是你預期的那樣
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-25 11:23:16 IP:211.76.xxx.xxx 未訂閱
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 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
系統時間:2024-05-13 2:44:11
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!