canvas 預覽 與列印的問題 |
尚未結案
|
isthatu
初階會員 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
請問 我在paintbox.cancas 建了一個矩形區塊 同時用textout 放入相關文字的對應位置後 為何在最後列印的時候矩形大小及文字位置會跑掉? 我想請教一下 在螢幕解析度 與印表解析度 中間的轉換關係為何 因為是拿別家公司的報表來改 只不過是把橫式報表改成直式 程式裡相關螢幕解析度轉印表解析度的東西原本都寫好了 雖然我看的是一頭霧水 不過 我目前逮的不過是利用TEXTOUT把文字擺放位置做調整 多了一個矩形範圍框架而已 結果螢幕預覽正常 列印出來文字矩形就完全跑掉 唯報表下方原程式的矩形框內的圖文卻很正常的列印及顯示 是否我在設這個矩形框架 是還要做些啥麼設定 ????
------
BCDEFHIJKLMNOPQRSTUVWXZ |
shieh2700
高階會員 發表:0 回覆:127 積分:100 註冊:2002-06-13 發送簡訊給我 |
一個簡單範例, 在表單及印表機上分別劃出十公分的尺.
僅供參考.
procedure TForm1.Button1Click(Sender: TObject); var DPI: TSize; i, x : integer; begin //輸出至螢幕 DPI.cx := 96; //螢幕解析度(橫向) DPI.cy := 96; //螢幕解析度(縱向) for i := 0 to 100 do begin x:=Round(i*DPI.cx/25.39998) 5; if i mod 10 = 0 then begin Canvas.Polyline([Point(x,10),Point(x,25)]); Canvas.TextOut(x 1,20,IntToStr(i div 10)); end else if i mod 5 = 0 then Canvas.Polyline([Point(x,10),Point(x,20)]) else Canvas.Polyline([Point(x,10),Point(x,15)]); end; //輸出至印表機 DPI.cx := GetDeviceCaps( Printer.Handle, LOGPIXELSX );//印表機解析度(橫向) DPI.cy := GetDeviceCaps( Printer.Handle, LOGPIXELSY );//印表機解析度(縱向) Printer.BeginDoc; for i := 0 to 100 do begin x:=Round(i*DPI.cx/25.39998) 5; if i mod 10 = 0 then begin Printer.Canvas.Polyline([Point(x,10),Point(x,25)]); Printer.Canvas.TextOut(x 1,20,IntToStr(i div 10)); end else if i mod 5 = 0 then Printer.Canvas.Polyline([Point(x,10),Point(x,20)]) else Printer.Canvas.Polyline([Point(x,10),Point(x,15)]); end; Printer.EndDoc; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |