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

TPanel.PaintTo印出來的畫面如何放大?

缺席
binbinalia
一般會員


發表:14
回覆:23
積分:7
註冊:2003-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-29 14:32:48 IP:61.221.xxx.xxx 未訂閱
請教各位大大: 我本來想用TQRChart元件在報表裡放圖表,結果不知怎麼搞的一執行就當機, 後來我就想用TPanel裡的PaintTo直接把畫面印出來, 程式碼: Panel1.PaintTo(Handle,10,10); 結果印出來的畫面,只有大約火柴盒大小... 請問要怎麼讓它印出來有A4那麼大啊?
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-29 15:22:06 IP:210.61.xxx.xxx 未訂閱
我覺得您需在TQRChart元件再試試,畢竟用點陣放大會失真    Panel裡的圖形要放大, 可以使用Canvas裡StretchDraw對TGraphic目標 對象做放大繪製 然而您的目標是印表機TPrinter的Canvas    所以需用Win32 StretchBlt 這個 api 並且動一些迂迴的技巧    完整的範例如下, 提供您參考
  TMyPanel=class(TPanel);    uses printers;    procedure TForm1.Button1Click(Sender: TObject);
var
  ptr:TPrinter;
  rct:TRect;
  cns:TCanvas;
begin
  ptr:=TPrinter.Create;
  ptr.BeginDoc;
  cns:=TMyPanel(Panel1).Canvas;
  StretchBlt(ptr.Canvas.Handle,0,0,ptr.PageWidth,ptr.PageHeight,cns.Handle,0,0,
    panel1.Width,panel1.Height,srccopy);
  ptr.EndDoc;
  ptr.Free;
end;
binbinalia
一般會員


發表:14
回覆:23
積分:7
註冊:2003-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-30 13:27:31 IP:61.221.xxx.xxx 未訂閱
P大哥: 我試了您的方法,結果不知為何會出現vcl50什麼的好像是記憶體錯誤的訊息. 後來我試用下面這個方法就可以了,謝謝您~ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=44051
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-30 14:11:59 IP:210.61.xxx.xxx 未訂閱
speedup幫我做了一次複習 TPrinter物件delphi已經幫我們Create了 所以像TApplication及TScreen 不必再建第二個了 另外若您使用bmp, 那麼是繪製二次, 第一次從panel到bmp 第二次是bmp到printer 而使用我給的提示是僅用一次功 不過您的問題speedup解決就好, 這點小差異不算什麼 差不多啦
系統時間:2024-06-24 21:04:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!