У меня есть форма с расчетными данными и диаграммами, то есть размер бумаги (формат А4). Это означает, что метод 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)
Еще раз спасибо за вашу помощь , Sincerely Maarten – user3212668
Добро пожаловать. –