Benutzer mit den meisten Antworten
Rund ums Drucken

Frage
-
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage e.Graphics.DrawString(RichTextBox1.Text, New Font("Arial", RichTextBox1.Font.Size, FontStyle.Bold), Brushes.Black, 25, 25) End Sub
Hallo,
zum Thema Drucken findet man nicht so viel für Anfünger verwertbares wie ich es mit gewünscht hätte. Dennoch habe ich mit Hilfe eines Videos wenigstens mal meinen Drucker dazu gebracht, dass er druckt.
Um das ganze nun in geordnete Bahnen zu lenken, habe ich aber auch hier Fragen:
Mein Test-Programm besteht aktuell aus einer RichTextBox1, einem MenuStrip für die Funktionen
- Drucken (PrintDialog1)
- Schriftart (FontDialog1)
- Schriftfarbe (ColorDialog1)Schriftart- und Größe handle ich wie folgt:
Schriftart so:
Private Sub SchriftartToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SchriftartToolStripMenuItem.Click FontDialog1.ShowDialog() RichTextBox1.Font = FontDialog1.Font End Sub
Schriftfarbe so:
Private Sub SchriftfarbeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SchriftfarbeToolStripMenuItem.Click ColorDialog1.ShowDialog() RichTextBox1.ForeColor = ColorDialog1.Color End Sub
Das Drucken wie folgt:
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage e.Graphics.DrawString(RichTextBox1.Text, New Font("Arial", RichTextBox1.Font.Size, FontStyle.Bold), Brushes.Black, 25, 25) End Sub
Wobei ich da natürlich auch gerne die Schriftart und FontStyle sowie die Schriftfarbe direkt aus der RichTextBox übernehmen würde.
Beim PrintDialog verwende ich folgenden Code:Private Sub DruckenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DruckenToolStripMenuItem.Click If PrintDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then PrintDocument1.PrinterSettings = PrintDialog1.PrinterSettings PrintDocument1.Print() Else : End If End Sub
Insgesamt habe ich beim Ausdruck also folgenden Probleme:
1. Der Ausdruck erfolgt mit einer anderen Schriftart als ich über den FontDialog ausgwählt habe. Das das so ist, ist mir auch klar, ich haben ja explizit Arial angegeben. Wie stelle ich es an, dass beim Drucken die Schriftart gedruckt wird, die auch im RFT-Feld angezeigt wird?
2. Das gleiche Problem habe ich natürlich mit FontStyle (hier Bold). Natürlich erwartet jeder, dass der Ausdruck der Darstellung am Bildschirm entspricht. Wie regle ich das, dass Schriftart und Schriftschnitt beim Druck übernommen werden.3. Womit wir dann bei der Farbe sind. Hier besteht das selbe Problem.
4. Bislang macht mein RTF-Fenster zwar einen Zeilenumbruch wenn es erforderlich ist. Der Ausdruck erfolgt alledings in einer Zeile. SingleLine? Wie stelle ich es an, dass auch hier alles so läuft wie wir es kennen?
Liebe Grüße Stefan
Antworten
-
Hallo Stefan,
da bist Du an einem wunden Punkt angekommen.
Denn eine RichTextBox verwendet intern RTF und erlaubt für jedes Zeichen
eine andere Schriftart, Farbe und anderes mehr. Hinzukommen andere Dinge
wie Einzüge, Nummerierungen usw.Dafür eine eigene Druckroutine zu schreiben wäre schon aufwändig.
Deswegen nutzt man unter Windows Forms die Möglichkeiten des Windows API,
siehe Den Inhalt eines RichTextBox-Steuerelements drucken
ud dürfte basieren auf: Getting WYSIWYG Print Results from a .NET RichTextBox ,
wo einige Hintergründe mehr erläutert werden.
Andere Möglichkeiten wären das Nutzen von Word - wo RTF ursprünglich herstammt -;
was aber eine Word Installation auf den Rechnern voraussetzen würde.Erst WPF kann es direkt: Gewusst wie: Speichern, Laden und Drucken von RichTextBox-Inhalt
Dort gibt es aber eine wesentlich erweitertes Druckmodell .
Und dies in eine Windows Forms Umgebung zu quetschen wäre ebenfalls aufwändig.Gruß Elmar
- Als Antwort markiert Giftzwockel Sonntag, 28. März 2010 20:58
Alle Antworten
-
Hallo Stefan,
da bist Du an einem wunden Punkt angekommen.
Denn eine RichTextBox verwendet intern RTF und erlaubt für jedes Zeichen
eine andere Schriftart, Farbe und anderes mehr. Hinzukommen andere Dinge
wie Einzüge, Nummerierungen usw.Dafür eine eigene Druckroutine zu schreiben wäre schon aufwändig.
Deswegen nutzt man unter Windows Forms die Möglichkeiten des Windows API,
siehe Den Inhalt eines RichTextBox-Steuerelements drucken
ud dürfte basieren auf: Getting WYSIWYG Print Results from a .NET RichTextBox ,
wo einige Hintergründe mehr erläutert werden.
Andere Möglichkeiten wären das Nutzen von Word - wo RTF ursprünglich herstammt -;
was aber eine Word Installation auf den Rechnern voraussetzen würde.Erst WPF kann es direkt: Gewusst wie: Speichern, Laden und Drucken von RichTextBox-Inhalt
Dort gibt es aber eine wesentlich erweitertes Druckmodell .
Und dies in eine Windows Forms Umgebung zu quetschen wäre ebenfalls aufwändig.Gruß Elmar
- Als Antwort markiert Giftzwockel Sonntag, 28. März 2010 20:58
-
Hallo Elmar,
jetzt weiß ich auch, warum das Thema Drucken in Bücher für Anfänger diskret ausgeklammert wird.
Es ist nichts für Anfänger. Eigentlich schade, da ja jeder irgendwann an den Punkt kommt und das, was er gezeichnet, berechnet oder geschrieben hat dokumentieren möchte. Die Links aus deiner Antwort werden mir einige Zeit und Energie abverlangen, bis ich da ggf. mal ein Stück weiter komme.
Problematisch sind solche Links für mich auch, weil sie in oftmals C# oder C++ -Codes beinhalten. Die sind doch schon speziell.
Bevor ich also die nächste Hürde in Angriff nehme, freue ich mich erst mal darüber, dass ich überhaupt schon mal einen Druckjob lostreten konnte.
Danke.
Liebe Grüße Stefan -
Hallo Stefan
Ich habe auch das Problem mit dem Drucken bzw. der gedruckten Ausgabe von gespeicherten Daten.
Mich würde sehr Dein Ergebnis interessieren. Genügend Zeit müßte ja jetzt vergangen sein.
Thomas
Es geht mir um WPF(XAML) Visual Studio Proff. 2010, VisualBasic, Win7 und verständliche Hilfe. Als Quelle nutze ich oft msdn Hilfe.