none
RichTextBox - Per Copy und Paste eingefügtes Bild wird zu groß RRS feed

  • Frage

  • In meiner C# WPF Anwendung verwende ich eine RichTextBox, die mit der man "Kommentare" in Form von Text und ggfs. Screenshots erfassen können soll.

    Wenn ich jetzt allerdings Screenshots einfüge (z. B. mit dem Snipping Tool erzeugt), dann blähen diese die Größe der XAML- oder RTF-Datei stark auf. Die Datei ist dann teilweise mehr als 10mal größer als der originale Screenshot als PNG-Datei ist. Mir ist schon klar, dass sich hinter der RichTextBox ein FlowDocument verbirgt, aber wie bekommt das Outlook hin, dass eine MSG-Datei im Vergleich dazu kaum größer ist als der originale Screenshot? Wenn ich die XAML- oder RTF-Datei im Text-Editor öffne, sehe ich sehr viele dieser Zeichen: "ÿ" and "÷æÍÿ".

    Mir ist auch aufgefallen, dass der Größenunterschied prozentual kleiner wird, je kleiner der Screenshot insgesamt ist, so als ob bei einem sehr großen Screenshot sehr viele Zusatzinformationen notwendig wären, um den Screenshot in der RichTextBox unterzubringen. 

    Die PNG-Datei des Screenshots hat z. B. eine Größe von 125KB, die XAML-Datei, die nur den Screenshot enthält, hat dann aber eine Größe von 1350 KB. Das entsprechende RTF-Dokument ist sogar noch größer.

    C#-Code:

    private void SaveXamlPackage(string iv_fileName)
    {
        TextRange range;
        FileStream fStream;
        range = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
        fStream = new FileStream(iv_fileName, FileMode.Create);
        range.Save(fStream, DataFormats.XamlPackage);
        fStream.Close();
    }


    • Bearbeitet RBXXXX Dienstag, 20. Oktober 2020 17:06
    Dienstag, 20. Oktober 2020 12:40

Antworten

  • Ich habe es jetzt so gelöst, dass ich mir die Bilder in der RichTextBox suche (Vorgehensweise siehe Google), diese jeweils gegen ein Dummy-Bild austausche, alle Bilder separat als Datei abspeichere und diese später wieder in die RichTextBox reinlade. Dadurch ist der Platzbedarf minimal. Das Dummy-Bild als Platzhalter sorgt dafür, dass die Bilder beim Reinladen wieder an die richtige Position kommen. Als Format verwende ich XamlPackage, nicht RTF.


    • Als Antwort markiert RBXXXX Donnerstag, 22. Oktober 2020 19:10
    • Bearbeitet RBXXXX Donnerstag, 22. Oktober 2020 19:18
    Donnerstag, 22. Oktober 2020 19:09

Alle Antworten

  • Hallo,

    es kommt ganz drauf in welchem Format ein Bild im RTF Dokument abgelegt wird. Du könntest eine andere Übergabe versuchen.

    inserting image into richtextbox control


    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings

    Dienstag, 20. Oktober 2020 18:55
  • Hallo Thomas,

    in dem von Dir angefügten Link geht es um das Einfügen von Bildern in die RichTextBox zur Laufzeit. Ich füge diese aber per Copy und Paste in die RichTextBox ein. Diese hat in meiner XAML-Struktur derzeit kein weiteres Element.

    - Welches untergeordnete Element müsste hier ggfs. ergänzt werden?

    - Könnte der Inhalt der RichTextBox evtl. nach Text und Bildern getrennt gespeichert und erst zur Laufzeit zusammengefügt werden?

    Viele Grüße,

    RBXXXX

    Mittwoch, 21. Oktober 2020 06:24
  • Um auf das Bildformat Einfluss zu nehmen, muss Du in diesen Prozess eingreifen.

    Mit ist nicht bekannt das man in einem RTF Dokument ein Bild nur als Verweis angeben kann


    Gruß Thomas
    13 Millionen Schweine landen jährlich im Müll
    Dev Apps von mir: UWP Segoe MDL2 Assets, UI Strings

    Mittwoch, 21. Oktober 2020 11:11
  • Ich habe es jetzt so gelöst, dass ich mir die Bilder in der RichTextBox suche (Vorgehensweise siehe Google), diese jeweils gegen ein Dummy-Bild austausche, alle Bilder separat als Datei abspeichere und diese später wieder in die RichTextBox reinlade. Dadurch ist der Platzbedarf minimal. Das Dummy-Bild als Platzhalter sorgt dafür, dass die Bilder beim Reinladen wieder an die richtige Position kommen. Als Format verwende ich XamlPackage, nicht RTF.


    • Als Antwort markiert RBXXXX Donnerstag, 22. Oktober 2020 19:10
    • Bearbeitet RBXXXX Donnerstag, 22. Oktober 2020 19:18
    Donnerstag, 22. Oktober 2020 19:09