畫面列印的怪問題??? |
尚未結案
|
kenlee
一般會員 發表:10 回覆:8 積分:3 註冊:2004-04-29 發送簡訊給我 |
我想列印出表單(Form1)的畫面,但用下面程式碼的方式雖有列印動作,但實際上卻無輸出任何圖形(空白),但是如果先將表單上的畫面儲存後再讀取,就可列印出畫面?兩者皆將最後輸出畫面存檔後,以圖像軟體看到的畫面卻相同(但由Win200的[內容][摘要]到的資訊卻不相同)??請問要如何在不讀/存檔的條件下,直接列印表單上的指定區域?
void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap *Bmp = new Graphics::TBitmap(); TRect ImgRect, PrintRect; int Left, Top; // 若不先執行此行,則列印輸出為空白 // // Bmp->LoadFromFile("C:\\Sp\\sky.bmp"); Bmp->Width = 800; Bmp->Height = 600; Bmp->Canvas->CopyRect(Rect(0,0,800,600), Form1->Canvas, Rect(0,0,320,240)); Left = (Printer()->PageWidth - Bmp->Width*4) / 2; Top =(Printer()->PageHeight - Bmp->Height*4) / 2; ImgRect= Rect(0, 0, Bmp->Width, Bmp->Height); PrintRect = Rect(10, 10, Left Bmp->Width*4, Top Bmp->Height*4); Printer()->BeginDoc(); Printer()->Canvas->CopyRect(PrintRect, Bmp->Canvas, ImgRect); // 測試輸出的結果 // Bmp->SaveToFile("C:\\Output.bmp"); Printer()->EndDoc(); delete Bmp; }發表人 - kenlee 於 2004/10/20 14:01:52 |
geniustom
版主 發表:100 回覆:303 積分:260 註冊:2003-01-03 發送簡訊給我 |
kenlee您好..用以下的方法比較直接..也比較簡單..
< class="code">
Graphics::TBitmap*Bmp1=new Graphics::TBitmap();
TCanvas *MyCanvas= new TCanvas;
TRect rect = Form1->ClientRect;
HDC dc = GetDC(Form1->Handle);
MyCanvas->Handle = dc;
Bmp1->Width = rect.Right - rect.Left;
Bmp1->Height = rect.Bottom - rect.Top;
Bmp1->Canvas->CopyRect(rect,MyCanvas,rect); 寫下您的PRINT程式區段 delete MyCanvas;
delete Bmp1;
這樣就能順利的從記憶體取得FORM1的畫面了
|
kenlee
一般會員 發表:10 回覆:8 積分:3 註冊:2004-04-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |