verkehrte Schriftgrößen in RichTextBox nach speichern/neu einlesen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von OnkelR.

    verkehrte Schriftgrößen in RichTextBox nach speichern/neu einlesen

    Hi, Leute.
    Ich habe meine RichTextBox nach verschiedenen Kriterien (Bildschirmauflösung,Zoom-Faktor usw.) in den Werten
    Me.RichTextBox.RightMargin
    Me.RichTextBox.Width
    so eingestellt, um in der Druckvorschau & -ausgabe ein ziemlich genaues Abbild des Inhaltes der RichTextBox zu bekommen.

    Über eine Combobox wähle ich für einen in der RichTextBox selektierten Bereich eine bestimmte Schriftgröße.
    Dabei habe ich festgelegt, daß für bestimmte Schriftgrößen keine Ganzzahl benutzt wird.

    z.B.:
    für 8 setze ich 8.25
    für 10 = 9.75
    für 11 =11.25
    für 14 = 14.25
    für 16 = 15.75
    usw.

    Diese neu Schriftgröße übernehme ich mittels
    Dim ft As New Font(Fontname_Cb.SelectedItem.ToString, akt_Font_Size, FontSt, GraphicsUnit.Point)
    Me.RichTextBox.SelectionFont = ft
    usw.

    Mit diesen Werten stimmt dann die Druckvorschau & -ausgabe mit der RichTextBox-Ansicht zu 99% überein.
    (ein paar Fonts machen noch Probleme)

    Wenn ich die rtf-Datei dann speichere und erneut lade, dann zeigt die Ausgabe des Aufrufs
    Me.RichTextBox.SelectionFont.Size

    8.5 anstatt 8.25
    11.5 anstatt 11.25
    14.5 anstatt 14.25
    usw. und die Druckvorschau stimmt nicht mehr mit meiner RichTextBox-Ansicht überein.
    Also wird die von mir gestzte Schriftgröße beim speichern nicht übernommen. (Aus 8.25 wurde 8.5 ...)

    Kann man das irgendwie lösen?
    ist aber trotzdem komisch, daß deine Anzeige nicht mit dem Druck übereinstimmt, entweder wird beim Drucken andere Schriftgröße benutzt oder die Anzeige ist nicht auf Standard gesetzt,
    wie z.B. bei Win7, siehe Pic im Anhang...

    Ciao...
    Bilder
    • Unbenannt-1.png

      86,93 kB, 857×419, 144 mal angesehen
    Jo, meine Azeige ist auf Standard. Wie gesagt bei 8.25 ansatt 8.5 Schriftgröße ist die Druckausgabe nahezu perfekt.
    Ich hab das mit den verschiedensten Druckroutinen die ich finden konnte ausprobiert.
    Ich benutze mittlerweile für Richtextbox die RichTextBoxEx.dll und als Druckroutine RTBPrintCtrl.dll
    Habe damit die bisher besten Ergebnisse erzielt. Alle Druckroutinen die ich probierte hatten immer irgendein Manko, dass
    sich von mir nicht beheben lies. Naja, wird eben weitergefummelt bis es klappt, wa.
    Hey Adam, bin gestern leider vor Deiner Frage einjepennt.
    Sorry, zum drucken benutz ich nicht mehr RTBPrintCtrl.dll, hatte ich aber auch mal ausprobiert. Der Source war aus irgend 'nem Forum, weiß nicht mehr genau wo.

    zur RichTextBoxEx.dll

    Das ist eine erweiterte RichTextBox, nix besonderes, halt nur ne kleine Erweiterung.
    Den Source hab ich aus 'nem Workshop von:
    vbarchiv.net/workshop/workshop…te-richtextbox-vbnet.html

    (...
    Um den selektierten Text zu formatieren, stehen Ihnen in mit der erweiterten RichTextBox "RichTextBoxEx" folgende Prozeduren zur Verfügung:
    ...)

    Selektierten Text Formatieren:

    * SetSelectionFont (= Schriftart festlegen)
    * SetSelectionSize (= Schriftgröße setzen)
    * SetSelectionBold (= Fett bei True)
    * SetSelectionItalic (= kursiv bei True)
    * SetSelectionUnderlined (=unterstrichen bei True)

    üblicherweise setzt Du Deine Schriftparameter ja so:

    Quellcode

    1. Dim ft As New Font(FontName..., FontSize..., FontStyle..., GraphicsUnit...)
    2. RichTextBox.SelectionFont = ft


    und jetzt, selektierter Text kursiv:

    Quellcode

    1. With RichTextBox
    2. .SetSelectionItalic(.SelectionFont.Italic)
    3. End With
    4. 'gegenteilige Formatierung über den NOT-Operator:
    5. With RichTextBox
    6. .SetSelectionItalic(Not .SelectionFont.Italic)
    7. End With

    Is wirklich nur 'ne kleine Erweiterung.

    Ich prüfe gerade die Sub's fürs Drucken in der RichTextBoxEx.dll,
    vllt. hat sich da ja was eingeschlichen.

    Sag mal, hast Du vllt. schon mal 'ne RTB mit formatiertem Text ordentlich zum Ausdruck gebracht?
    Tschau.

    * SetSelectionSize (= Schriftgröße setzen)'gibt es nicht
    * SetSelectionBold (= Fett bei True)'nicht
    * SetSelectionItalic (= kursiv bei True)'nicht
    * SetSelectionUnderlined (=unterstrichen bei True)'nicht

    die gibt es zwar in der Standard RTB nicht, aber ist das denn so schlimm?:P
    das einzigste in dem Code ist noch das Drucken, aber es ist immer am besten, wenn man sich seine eigene Druckoperation macht, da man dann weiß, wie es programmiert wurde und wo man was ändern muss um etwas bestimmtes zu erreichen...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Hey jvbsl.

    Ich geb Dir in beiden Punkten Recht.
    Ich weiß ja noch garnicht, ob ich die erweiterte RTB letztendlich benutzen werde. Bin hier voll am rumprobieren.
    Die Druckoperation kann man in der Source der erweiterten RTB aber immer noch beeinflussen.
    Auf der Suche nach dem optimalen Ergebnis kommt man als Anfänger manchmal nicht drumherum die Ideen
    anderer mal auszuprobieren.
    Tschau