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

如何將TBitBtn,TEdit,TShape元件畫在TImage上列印出來

尚未結案
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-18 20:33:45 IP:61.229.xxx.xxx 未訂閱
我想要將TBitBtn,TEdit,TShape元件畫在TImage上列印出來,我想請問各位高手要如何將上述的三個元件能夠畫在TImage上,而我只要將TImage丟給Print列印就好了 我現在只會在畫面上將三種元件顯示在TImage上,而不會畫在TImage上,還請各位大大教我!!!
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-18 21:39:02 IP:140.135.xxx.xxx 未訂閱
markov您好:  若元件有handle可用下面方式達到您的目的
Graphics::TBitmap*BMP=new Graphics::TBitmap();
 TCanvas *MyCanvas= new TCanvas;;
 TRect rect = BitBtn1->ClientRect;
 HDC dc = GetDC(BitBtn1->Handle);
 MyCanvas->Handle = dc;
 BMP->Width = rect.Right - rect.Left;
 BMP->Height = rect.Bottom - rect.Top;
 BMP->Canvas->CopyRect(rect,MyCanvas,rect);
 Image1->Picture->Assign(BMP);
 delete MyCanvas;
 delete BMP;
Tshape您可以使其Parent為Panel(有handle),迂迴的方式達到您的目的 順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~ 發表人 -
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-22 08:54:38 IP:61.220.xxx.xxx 未訂閱
謝謝! 我沒有想到可以用GetDC
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-26 10:02:03 IP:211.22.xxx.xxx 未訂閱
雖然已經結案了 但是我在試TShape時發現不會動作,是不是我那裡寫錯了! 還請各位大大指教!     
 TShape *shape=new TShape(Panel1);
 shape->Parent=Panel1;
 shape->Brush->Color=clGreen;
 shape->Shape=stCircle;     Graphics::TBitmap*BMP=new Graphics::TBitmap();
 TCanvas *MyCanvas= new TCanvas;;
 TRect rect = shape->ClientRect;
 HDC dc = GetDC(shape->Parent->Handle);
 MyCanvas->Handle = dc;
 BMP->Width = rect.Right - rect.Left;
 BMP->Height = rect.Bottom - rect.Top;
 BMP->Canvas->CopyRect(rect,MyCanvas,rect);
 Image1->Picture->Assign(BMP);
 delete MyCanvas;
 delete BMP;
 delete shape;
 
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-26 13:49:57 IP:140.135.xxx.xxx 未訂閱
markov您好: 試試下面的code
TShape *shape=new TShape(Panel1);
 shape->Parent=Panel1;
 shape->Brush->Color=clGreen;
 shape->Shape=stCircle;
 Application->ProcessMessages();
 Graphics::TBitmap*BMP=new Graphics::TBitmap();
 TCanvas *MyCanvas= new TCanvas;;
 TRect rect = shape->ClientRect;
 HDC dc = GetDC(shape->Parent->Handle);
 MyCanvas->Handle = dc;
 BMP->Width = rect.Right - rect.Left;
 BMP->Height = rect.Bottom - rect.Top;
 BMP->Canvas->CopyRect(rect,MyCanvas,rect);
 Image1->Picture->Assign(BMP);
 delete MyCanvas;
 delete BMP;
 delete shape;
順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
markov
中階會員


發表:55
回覆:135
積分:53
註冊:2003-12-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-26 13:59:57 IP:61.220.xxx.xxx 未訂閱
真的可以了也 太感謝taishyang了! 十二萬分感激
系統時間:2024-06-25 14:04:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!