Hallo zusammen,
ich habe in einer Form einpanel das sich nach unten scrollen lässet. Nun möchte ich die Form ausdrucken.
Natürlich kann ich mit CaptureScreen nur den sichtbaren Inhalt der Form erfassen.
Hat jemand eine Idee wie man das anders machen könnte?
Hier mein Code bis jetzt.
private void button6_Click(object sender, EventArgs e)
{
CaptureScreen();
printDocument1.Print();
}
private Bitmap _memoryImage;
private void CaptureScreen()
{
using (var myGraphics = CreateGraphics())
{
var s = Size;
_memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
using (var memoryGraphics = Graphics.FromImage(_memoryImage))
{
memoryGraphics.CopyFromScreen(Location.X, Location.Y, 0, 0, s);
}
}
}
private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
var wScale = e.MarginBounds.Width / (float)_memoryImage.Width;
var hScale = e.MarginBounds.Height / (float)_memoryImage.Height;
var scale = wScale < hScale ? wScale : hScale;
e.Graphics.ScaleTransform(0.82f, 0.82f);
e.Graphics.DrawImage(_memoryImage, 0, 0);
}
Grüße Goofigoofi
Zeichnest du den Inhalt des Panel
selbst (mittels des Paint
-Ereignisses) oder befinden sich weitere Steuerelemente auf dem Panel?
Für ersteres erzeuge dir eine Methode, welche ein Image
(bzw. Bitmap
) erzeugt und dadrin zeichnet (und in der Paint
-Methode auch einfach das erzeugte Image
zeichnet). So kannst du dann dieses Image ausdrucken (müßtest aber noch überprüfen, wie das dann mit der Papiergröße bzw. Aufteilung auf mehrere Seiten aussieht).
Mittels Graphics.FromImage erhält man ein Graphics
-Objekt, mit dem man analog zum Paint
-Ereignis zeichnen kann.
Wenn du aber die ganze Form (inkl. kompletten Panel
-Inhalt) ausdrucken willst, wie stellst du dir das vor (dann müßte ja die Form gestretcht werden, je nachdem wo das Panel
auf der Form platziert ist)?
Nein es befinden sich noch viele weitere Steuerelemente auf dem Panel.
kannman nicht irgendwie den Bereich vorgeben der gedruck werden soll?
Evtl. hilft Form.Print
oder Control.DrawToBitmap
?
Aber schau auch mal in Drucken eines Controls? und Formular/Control drucken oder als Bitmap speichern.