Wie kann ich ein Bild einfügen in eine RichTextBox?
Meisten der Beispiele, die ich sehe, sagen, um es in die Zwischenablage und verwenden Sie einfügen, aber das scheint nicht sehr gut zu sein, weil es überschreibt die Zwischenablage.
Sah ich eine Methode , manuell setzen Sie das Bild in die RTF mit einem pinvoke zu konvertieren Sie das Bild um eine wmf. Ist dies der beste Weg? Gibt es eine weitere einfache Sache, die ich tun kann?
InformationsquelleAutor Daniel LeCheminant | 2009-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachste Weg wäre eine änderung der RTF-code zum einfügen des Bildes selbst.
Im RTF-Format, ein Bild ist wie folgt definiert:
'{' \pict (brdr? & Schattierung? & picttype & pictsize & metafileinfo?) Daten '}'
Ein Fragezeichen gibt an, die Kontrolle Wort ist optional.
"Daten" ist einfach der Inhalt der Datei in hex-format. Wenn Sie möchten, verwenden binäre, verwenden Sie den \bin-control-Wort.
Zum Beispiel:
\pict = beginnt ein Bild-Gruppe,
\pngblip = png-Bild
\picwX = Breite des Bildes (X ist der pixel-Wert)
\pichX = Höhe des Bildes
\picwgoalX = gewünschte Breite des Bildes in twips
So, ein Bild einfügen, müssen Sie nur öffnen Sie Ihr Bild, konvertieren Sie die Daten in hex, laden diese Daten in einen string und fügen Sie die RTF-codes um es zu definieren Sie eine RTF-Bild. Nun, Sie haben ein selbst enthaltenen string mit den Bild-Daten, die Sie einfügen können, die in der RTF-code in einem Dokument. Vergessen Sie nicht die schließende "}"
Weiter, Sie erhalten die RTF-code von Ihrem RichTextBox (rtbBox.Rtf), fügen Sie das Bild an die richtige Stelle, und setzen Sie den code der rtbBox.Rtf
Einem Problem, das Sie in ausgeführt wird, dass .NET RTB nicht haben eine sehr gute Unterstützung der RTF-standard.
Ich habe gerade eine kleine Anwendung,* die ermöglicht es Ihnen, schnell zu testen, einige RTF-code in einem RTB und sehen, wie es verarbeitet. Sie können es hier herunterladen:
RTB-tester (http://your-translations.com/toys).
Können Sie fügen Sie einige RTF-Inhalten (aus Word z.B.) in der linken RTF-box und klicken Sie auf die "Show RTF-codes" auf, um die RTF-codes in der richtigen RTF-Feld, oder Sie können einfügen RTF-code in der rechten RTB und klicken Sie auf "Anwenden RTF-codes", um die Ergebnisse zu sehen auf der linken Seite.
Können Sie natürlich Bearbeiten Sie die codes wie du möchtest, das macht es sehr bequem für die Prüfung, ob oder nicht das RichTextBox-Steuerelement unterstützt die Befehle, die Sie brauchen, oder erfahren Sie, wie verwenden Sie das RTF-Steuerelement Wörter.
Können Sie eine vollständige Spezifikation für die RTF-online.
NB Es ist nur eine kleine Sache, die ich schlug zusammen in 5 Minuten, so dass ich nicht umsetzen Datei öffnen oder speichern per drag-and-drop oder anderen zivilisierten Zeug.
1 "twip" = 1/20 Punkt. 1 Punkt ~ 1.333 Pixel (dies hängt von der Bildschirmauflösung, die meisten Monitore heute laufen 96 Pixel pro Zoll, die in Ihrer nativen Auflösung, damit das hält)
InformationsquelleAutor Sylverdrag
Ich den folgenden code verwenden, um zunächst die Daten aus der Zwischenablage, im Gedächtnis zu speichern, legen Sie das Bild in die Zwischenablage, fügen Sie ihn im Feld für Rich-Text und schließlich die Wiederherstellung der Daten in die Zwischenablage.
Den OpenFileDailog1 RichTextBox1 und Button1 werden Datei-Öffnen-Dialog, Rich-Text-Feld-und button-Steuerelemente beziehungsweise.
Kann nicht glauben, dass es funktionierte, Sie sind ein Genie....
Was passiert, wenn Richtextbox nur-Lese-Eigenschaft festgelegt ist, um wahr zu sein? Dieser Zwischenablage-Methode wird scheitern.
+1 für diese Lösung, die akzeptierte Lösung ist viel zu kompliziert.
InformationsquelleAutor Bibek Dahal
== true
ist buchstäblich die meisten nutzlosen code, den ich je gesehen habe.InformationsquelleAutor
Hier ist, was ich tun, um das "hacken" der rich-text-Steuerelement:
Legen Sie das gewünschte Bild in wordpad oder MS-WORD. Speichern Sie die Datei als "rtf". Öffnen Sie die rtf-Datei im Editor zu sehen, die raw rtf-code. Kopieren Sie die benötigten tags & Zeug, um die " rtf " - Eigenschaft der Rich-Text-Feld ("anfügen", um vorhandenen text).
Gibt es einige Versuch und Irrtum beteiligt, aber Sie funktioniert.
Mit C# verwende ich Platzhalter StringBuilder-Objekte mit den notwendigen rtf-code. Dann ich fügen Sie einfach das Bild Weg.
Dies ist ein workaround für nicht zu lernen, die RTF-syntax.
Ich bin auf der Suche nach "gewusst Wie: einfügen eines Bildes in Richtextbox" seit dem morgen, Aber alles ist van. Nach dem Lesen dieser Antwort, die ich haben don in weniger als 180 Sekunden. +1 für dich.
InformationsquelleAutor Sesh
Meine eigene version gepostet, dass ich in einem neuen thread, anscheinend ich sollte haben gesucht, und es hier gepostet. Wie auch immer, mit der Zwischenablage wieder sehr einfach.
InformationsquelleAutor SandraTinch
Wenn du in C++, der Weg, es zu tun, ist durch OLE. Genauer gesagt, wenn Sie Google-Suche für ImageDataObject es wird sich zeigen, C++ - code, wie Sie zum einfügen eines HBITMAP in das RTF-Steuerelement. Ein link ist hier.
Nun, wie dies in einer .Net-code, weiß ich nicht. Ich habe derzeit nicht die Zeit haben, zu arbeiten, durch die details.
InformationsquelleAutor Joel Lucsy
War ich auch auf der Suche nach etwas, das für die gleiche Aufgabe und fand diese ->
http://sourceforge.net/projects/netrtfwriter/
Können Sie generieren jede Art von RTF-text, den Sie möchten und dann verwenden Sie es wie Sie wollen. Sehr gut strukturiertes Beispiel, die auto-Sinne der Bildtyp (jpg/jpeg/png etc) und arbeitete für die Bild-Dateien, die ich habe mit. Wenn Sie in Eile sind, dann ist dies ein großer RTF-generator!
InformationsquelleAutor jackocurly0074
Alles, was ich Tat, war eine kleine pictureBox-Steuerelement in c# und sorgte dafür, es war versteckt hinter einem anderen Objekt groß genug, um es zu verstecken. Dann machte ich eine Schaltfläche ein Bild einfügen, und es belastet die pictureBox mit dem Bild, dann wird es in der richTextBox dann löscht Sie das pictureBox-Steuerelement.
Hier ist der code.
InformationsquelleAutor Larryrl
Mehrere Stunden surfen für die Lösung Bild einfügen, ohne Qualität zu verlieren und fixierte den grauen hintergrund mit transparenten image/png
InformationsquelleAutor Sourcephy