Bild in einer RichTextBox verschieben

  • .NET (FX) 4.5–4.8
  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von LMS.Crafter.

    Bild in einer RichTextBox verschieben

    Guten Abend Community,

    ich arbeite seit längerer Zeit an einem Projekt, doch nun hänge ich leider an einem kleinen Detail fest.
    Mein Programm ist erweiterbar, was bedeutet, dass es nicht fest vorgeschrieben ist, sondern nur die Grundlage dafür bietet.
    So kann ich etwas hinein schreiben, Tags setzen, eine Form verändern. Sucht man nun nach so einem Tag, nimmt die Form genau die Eigenschaften und die Texte und Bilder auf, welche zuvor definiert wurden.
    Soviel zu den Hintergründen. Mit PictureBoxen und RichTextBoxen funktioniert das mittlerweile sehr gut.

    Mein Problem ist nun, wenn ich zu den Texten keine vorgegebene Anzahl von Bildern haben will, sondern soviel wie es nunmal braucht,
    gibt es da eine Möglichkeit?

    Mein Ansatz momentan ist es, Bilder in eine RichTextBoxen hinein zu laden

    Visual Basic-Quellcode

    1. Private Sub BildEinfügenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles BildEinfügenToolStripMenuItem.Click, BildEinfügenToolStripMenuItem1.Click
    2. With Me.OpenFileDialog1
    3. .Filter = "jpg files(*.jpg)|*.jpg|png files(*.png)|*.png"
    4. .FileName = ""
    5. If .ShowDialog = Windows.Forms.DialogResult.OK Then
    6. Dim img As Image = Image.FromFile(.FileName)
    7. If .FileName.ToUpper Like "*JPG*" Then
    8. img.Save(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\WWDW\pages\" & My.Settings.pagename & "\Image_" & next_image(True) & ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
    9. ElseIf .FileName.ToUpper Like "*PNG*" Then
    10. img.Save(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\WWDW\pages\" & My.Settings.pagename & "\Image_" & next_image(False) & ".png", System.Drawing.Imaging.ImageFormat.Png)
    11. End If
    12. img = PicResizeByWidth(img, 200)
    13. Clipboard.SetImage(img)
    14. Me.rtb_text1.Paste()
    15. Clipboard.Clear()
    16. End If
    17. End With
    18. End Sub


    Das PicResizeByWidth(img, 200) skaliert dabei das Bild kleiner und verringert dessen Auflösung.

    Meine Frage nun, ist es möglich auf diese Bilder in der RichTextBox per Code Einfluss zu nehmen?
    Z.B. was passiert wenn man auf so ein bild drauf klickt, was passiert wenn ein Bild hinausgelöscht wurde, ist es möglich die Bilder in der RichTextBox zu verschieben, etc...

    Oder hat jemand einen anderen Lösungsvorschlag, wie man eine Variable Anzahl an Bildern in einer Form haben kann, welche man nach belieben verschieben kann?

    Ich wäre um Lösungsvorschläge sehr dankbar :)

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @LMS.Crafter Nimm das WordPad und probiere aus, ob so was geht.
    Wenn es da geht, kann es in einer RTB auch gehen (muss nicht!)
    Wenn ein Bild in einer Zeile allein steht, kannst Du davor einen Tab setzen und mit der Tab-Position die Bild-Start-Position definieren.

    VB.NET-Quellcode

    1. RichTextBox1.SelectionTabs = New Integer() {80, 160, 240}
    2. RichTextBox1.AcceptsTab = True
    Du musst nur vor dem Bild einen Tabulator einfügen (vbTab).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    LMS.Crafter schrieb:

    WordPad mit VB geschrieben
    Nein.
    Es gibt einen mehr oder weniger fixen Rich-Text-Standard, und in der .NET-RichTextBox ist ein gewisser Teil davon implementiert, Wordpad wesentlich mehr.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!