1
我有一個帶有計算數據和圖表的表格,即紙張尺寸(A4格式)。這使得CopyFromScreen方法無法截屏整個表單。更改屏幕分辨率不是一個好主意,因爲該程序可以在多臺計算機上運行。在下面的代碼中,您會發現兩個CaptureScreen函數(只能使用一個),但沒有一個打印整個表單。只有我的報告的上半部分被打印到圖像上。有什麼建議麼?打印大於屏幕尺寸的表格
open System.IO
open System.Drawing
open System.Windows.Forms
open System.Drawing.Printing
open Microsoft.FSharp.Control
// declaration Form (main) and Button (print)
// captureScreen CopyFromScreen version
let captureScreen (form: Form) =
let myGraphics = form.CreateGraphics()
let size = form.Size
let memoryImage = new Bitmap(size.Width, size.Height, myGraphics)
let memoryGraphics = Graphics.FromImage(memoryImage)
memoryGraphics.CopyFromScreen(form.Location.X, form.Location.Y, 0, 0, size)
memoryImage
// captureScreen bitmap version
let captureScreen (form: Form) =
let myGraphics = form.CreateGraphics()
let size = form.Size
let rectangle = new Rectangle(Height=size.Width, Width=size.Width)
let memoryImage = new Bitmap(size.Width, size.Height, myGraphics)
main.DrawToBitmap(memoryImage,rectangle)
memoryImage
// rest of program
let printdoc = new System.Drawing.Printing.PrintDocument()
let printdia = new PrintDialog(Document=printdoc, AllowSomePages=true, ShowHelp=true)
let mutable Image = new Bitmap(main.Size.Width, main.Size.Height)
print.Click.Add(fun prt -> Image <- captureScreen(main)
printdia.ShowDialog() |> ignore
printdoc.Print())
printdoc.PrintPage.Add(fun prt ->
print.Visible <- false
prt.Graphics.DrawImage(Image, 0, 0)
print.Visible <- true)
,感謝你的幫助。真誠的Maarten – user3212668
非常歡迎。 –