線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1084
推到 Plurk!
推到 Facebook!

表單若有覆蓋,如何讓圖不被上面表單抹掉

尚未結案
smilebye
一般會員


發表:21
回覆:33
積分:10
註冊:2004-01-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-06 21:20:46 IP:211.72.xxx.xxx 未訂閱
 //****將開啟的圖片秀在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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-07 22:59:38 IP:61.221.xxx.xxx 未訂閱
引言:
 //****將開啟的圖片秀在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 你好: 請參考以下的做法 < 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 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
smilebye
一般會員


發表:21
回覆:33
積分:10
註冊:2004-01-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-08 22:20:30 IP:211.72.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-08 22:52:15 IP:140.135.xxx.xxx 未訂閱
發表人 -
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-08 22:59:50 IP:61.221.xxx.xxx 未訂閱
引言: 版主你好~ 對於你的回答我不是很懂捏..我的主表單是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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-09 00:54:53 IP:211.72.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-27 15:01:39 IP:140.129.xxx.xxx 未訂閱
引言:
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
smilebye您好: 您最先的問題是出在沒有將秀圖的部分寫在Paint()method中,所以當該form被其它程式遮住後再移去時,因該form沒有指定重繪的內容,被遮住部份圖形就消失了。 至於您現在描述的,最後也應該是最重要的部分,竟然沒有顯示出來!! 容我大膽與假設的提出我的可能是您要的回答: 從程式碼知道您已經完成當form需重繪時,讀入先前的圖檔再在form上重畫一次。我猜想這有沒有可能是file_name並沒有包含完整的路徑名稱,或者沒有正確的指定給它所屬的form。 count僅與圖形顯示位置有關,只要不給錯,頂多是顯示部分圖形或重複原來的圖形,這就要您將form的大小改成與圖形相同了。其實直接將圖形copy在form上即可,一定要以brush方式來塗嗎? I hope it is available to you.
系統時間:2024-05-10 8:05:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!