Hallo,
ich möchte 3 Charts drucken. Allerdings bekomme ich nur den PrintPreview() Befehl hin, welcher mir nicht erlaubt, den Drucker selbst zu wählen. In den MSDN Docs steht zwar ein .Print Befehl aber dieser wird als Fehler bei mir angezeigt mit der Auswahl diesen
zu "PrintPreview()", "PrintDocument()" und "PrintPage()" ändern.
private void Doc_PrintPage(object sender, PrintPageEventArgs e)
{
float x = e.MarginBounds.Left;
float y = e.MarginBounds.Top;
Bitmap bmp = new Bitmap(this.panel1.Width, this.panel1.Height);
this.panel1.DrawToBitmap(bmp, new Rectangle(0, 0, this.panel1.Width, this.panel1.Height));
e.Graphics.DrawImage((Image)bmp, x, y);
}
Das ist die Methode, mit der ich ein Panel ausdrucke. Dort funktioniert es, dass ich den Drucker vorher wählen kann. Da ich dies als erstes tute, war ich der Annahme verfallen, dass diese Einstellung für die 3 weitern Printbefehle bestehen bleibt. Jedoch
lag ich falsch und die Charts wurden auf dem, von Windows festgelegten, Standarddrucker ausgedruckt.
private void druckenToolStripMenuItem_Click(object sender, EventArgs e)
{
panel1.BackColor = Color.White;
tableLayoutPanel1.BackColor = Color.Transparent;
tableLayoutPanel2.BackColor = Color.Transparent;
tableLayoutPanel3.BackColor = Color.Transparent;
PrintDocument doc = new PrintDocument();
doc.PrintPage += this.Doc_PrintPage;
PrintDialog dlgSettings = new PrintDialog();
dlgSettings.Document = doc;
if (dlgSettings.ShowDialog() == DialogResult.OK)
{
doc.Print();
}
chart1.Printing.PrintDocument.DefaultPageSettings.Landscape = true;
chart2.Printing.PrintDocument.DefaultPageSettings.Landscape = true;
chart3.Printing.PrintDocument.DefaultPageSettings.Landscape = true;
chart3.Size = new Size(770, 500);
chart3.Printing.PrintPreview();
chart3.Size = new Size(770, 205);
chart1.Size = new Size(770, 500);
chart1.Printing.PrintPreview();
chart1.Size = new Size(770, 205);
chart2.Size = new Size(770, 500);
chart2.Printing.PrintPreview();
chart2.Size = new Size(770, 205);
panel1.BackColor = Color.Silver;
tableLayoutPanel1.BackColor = Color.Silver;
tableLayoutPanel2.BackColor = Color.Silver;
tableLayoutPanel3.BackColor = Color.Silver;
}
Damit drucke ich alles.
Zu meiner eigentlichen Frage, wie kann ich den Drucker für alle Prints temporär auf Default setzen?
Zur Anmerkung: Die Charts werden für den Druck vergrößert, da ich keine andere Möglichkeit bis jetzt gefunden habe, dies manuell zu ändern. Nachdem der Druck bestätigt wird, wird das Chart wieder in seine ursprüngliche Größe zurückgeformt.