表單若有覆蓋,如何讓圖不被上面表單抹掉 |
尚未結案
|
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
//****將開啟的圖片秀在SkinChip表單*** frmSkinChip->Show(); Graphics::TBitmap *BrushBmp = new Graphics::TBitmap; try { int i=40,j=15; //Skin chip = 40*15 BrushBmp->LoadFromFile(file_name); frmSkinChip->Canvas->Brush->Bitmap = BrushBmp; frmSkinChip->Canvas->FillRect(Rect(0,(count-1)*j,i,count*j)); } __finally { frmSkinChip->Canvas->Brush->Bitmap = NULL; delete BrushBmp; }請問一下,我是主表單開圖檔之後秀在另外一個表單上面,可是當我有表單覆蓋到秀圖檔的表單時,上面的圖會被抹掉...如何不讓圖被弄掉?(ps別叫我宣告image1-60個元件喔...) 謝謝回答 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言:smilebye 你好: 請參考以下的做法 < class="code"> Graphics::TBitmap *bmp=NULL; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { bmp=new Graphics::TBitmap; bmp->LoadFromFile("C:\\test.bmp"); } __fastcall TForm1::~TForm1() { if(bmp) delete bmp; } void __fastcall TForm1::FormPaint(TObject *Sender) { Form1->Canvas->CopyRect(Form1->ClientRect, bmp->Canvas, Rect(0, 0, bmp->Width, bmp->Height)); } -- Enjoy Researching & Developing --//****將開啟的圖片秀在SkinChip表單*** frmSkinChip->Show(); Graphics::TBitmap *BrushBmp = new Graphics::TBitmap; try { int i=40,j=15; //Skin chip = 40*15 BrushBmp->LoadFromFile(file_name); frmSkinChip->Canvas->Brush->Bitmap = BrushBmp; frmSkinChip->Canvas->FillRect(Rect(0,(count-1)*j,i,count*j)); } __finally { frmSkinChip->Canvas->Brush->Bitmap = NULL; delete BrushBmp; }請問一下,我是主表單開圖檔之後秀在另外一個表單上面,可是當我有表單覆蓋到秀圖檔的表單時,上面的圖會被抹掉...如何不讓圖被弄掉?(ps別叫我宣告image1-60個元件喔...) 謝謝回答 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
引言: smilebye 你好: 請參考以下的做法 < class="code"> Graphics::TBitmap *bmp=NULL; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { bmp=new Graphics::TBitmap; bmp->LoadFromFile("C:\\test.bmp"); } __fastcall TForm1::~TForm1() { if(bmp) delete bmp; } void __fastcall TForm1::FormPaint(TObject *Sender) { Form1->Canvas->CopyRect(Form1->ClientRect, bmp->Canvas, Rect(0, 0, bmp->Width, bmp->Height)); }版主你好~ 對於你的回答我不是很懂捏..我的主表單是Form1唷,主表單讀圖之後要把圖秀在SkinChip表單上...上面那個Form1->ClientRect, bmp->Canvas是什麼意思阿@@? 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 版主你好~ 對於你的回答我不是很懂捏..我的主表單是Form1唷,主表單讀圖之後要把圖秀在SkinChip表單上...上面那個Form1->ClientRect, bmp->Canvas是什麼意思阿@@? 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! smilebye 你好: (1)那不是一樣的意思嗎?其實我已經把原理寫出來了,剩下的要靠你自己努力 ,請問?你有查詢過 BCB Help 中的說明嗎?請問?你有利用以上程式碼的 關鍵字在本站搜尋相關文章嗎?如果沒有的話,我只能說...多用點心 (>>>>>>>>>> < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/03/08 23:15:45
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
void __fastcall TfrmSkinChip::FormPaint(TObject *Sender) { Graphics::TBitmap *BrushBmp = new Graphics::TBitmap; try { //Skin chip = 40*15 BrushBmp->LoadFromFile(file_name); frmSkinChip->Canvas->Brush->Bitmap = BrushBmp; frmSkinChip->Canvas->FillRect(Rect(0,(count-1)*15,40,count*15)); } __finally { frmSkinChip->Canvas->Brush->Bitmap = NULL; delete BrushBmp; } }請問我放在秀圖的表單中,上面的file_name跟count 都用extern了 執行時候會出現 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! 發表人 - smilebye 於 2004/03/09 01:00:01
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
引言:smilebye您好: 您最先的問題是出在沒有將秀圖的部分寫在Paint()method中,所以當該form被其它程式遮住後再移去時,因該form沒有指定重繪的內容,被遮住部份圖形就消失了。 至於您現在描述的,最後也應該是最重要的部分,竟然沒有顯示出來!! 容我大膽與假設的提出我的可能是您要的回答: 從程式碼知道您已經完成當form需重繪時,讀入先前的圖檔再在form上重畫一次。我猜想這有沒有可能是file_name並沒有包含完整的路徑名稱,或者沒有正確的指定給它所屬的form。 count僅與圖形顯示位置有關,只要不給錯,頂多是顯示部分圖形或重複原來的圖形,這就要您將form的大小改成與圖形相同了。其實直接將圖形copy在form上即可,一定要以brush方式來塗嗎? I hope it is available to you.void __fastcall TfrmSkinChip::FormPaint(TObject *Sender) { Graphics::TBitmap *BrushBmp = new Graphics::TBitmap; try { //Skin chip = 40*15 BrushBmp->LoadFromFile(file_name); frmSkinChip->Canvas->Brush->Bitmap = BrushBmp; frmSkinChip->Canvas->FillRect(Rect(0,(count-1)*15,40,count*15)); } __finally { frmSkinChip->Canvas->Brush->Bitmap = NULL; delete BrushBmp; } }請問我放在秀圖的表單中,上面的file_name跟count 都用extern了 執行時候會出現 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! 發表人 - smilebye 於 2004/03/09 01:04:58 發表人 - smilebye 於 2004/03/09 01:22:41 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |