/ / Wie kann ich ein Bild zur Laufzeit zwischen Text in eine WPF RichTextBox einfügen, damit der Text um das Bild herum schwebt - wpf, richtextbox

Wie kann ich zur Laufzeit ein Bild in eine WPF RichTextBox zwischen Text einfügen, damit der Text um das Bild herumfließt - wpf, richtextbox

Ich versuche, ein Bild in eine WPF einzufügenRichTextBox zur Laufzeit zwischen Text, so dass der Text schwebt. Ich habe versucht, einen Floater zu verwenden, aber das Endergebnis ist, dass nur eine Zeile neben dem Bild gesetzt werden kann und der Rest des Inhalts nach unten verschoben wird.

Dies ist der Code, den ich bisher zum Einfügen des Bildes habe:

    private Image SelectImage()
{
CommonDialog dialog = new CommonDialog();
dialog.InitialDirectory =  System.Environment.SpecialFolder.MyDocuments.ToString();
dialog.Filter.Add( new FilterEntry( Properties.Resources.StrImageFormats, "*.jpg;*.jpeg;*.gif;*.png" ) );
dialog.Title = Properties.Resources.StrSelectImage;

if ( dialog.ShowOpen() )
{
string filePath = dialog.FileName;
BitmapImage bitmap = new BitmapImage( new Uri( filePath, UriKind.Absolute ) );
Image image = new Image();
image.Source = bitmap;
image.Width = bitmap.Width;
image.Height = bitmap.Height;
return image;
}
return null;
}

private void ButtonInsertImage_Click( object sender, RoutedEventArgs e )
{
Image image = SelectImage();
if ( image != null )
{
TextPointer tp = RTB.CaretPosition.GetInsertionPosition( LogicalDirection.Forward );
Floater floater = new Floater( new BlockUIContainer( image ), tp );
}
}

Wenn ich jedoch den Cursor zwischen den Text setze, fügt der vorherige Code das Bild in eine neue Zeile ein und der Rest des Textes kommt nach dem Bild. Ein bisschen so:

"Lorem ipsum dolor sitzen amet, consecteturadipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud Übung ullamco laboris nisi ut aliquip ex ea Commodo Konsequenz. Duis aute irure dolor in reprehenderit in
[BILD KOMMT HIER]
[BILD KOMMT HIER]
[BILD KOMMT HIER]
[BILD KOMMT HIER]
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. "

Wie kann ich das Bild einfügen, damit der Text um das Bild herum schwebt (mehrere Zeilen vom Text rechts und links vom Bild entfernt)?

Wenn jemand eine Vorstellung davon hat, wie das geht, würde ich es gerne hier sehen. Vielen Dank.

Antworten:

0 für die Antwort № 1

Dies ist eine davon, die einfach ist, wenn Sie wissen, wie. Fügen Sie nach der Zeile in Ihrem Code, in der Sie den Floater erstellen, Folgendes hinzu:

floater.HorizontalAlignment = HorizontalAlignment.Center;
floater.Width = bitmap.Width;

Sie würden erwarten, dass der Floater die Breite abhängig von der Größe des Inhalts festlegt. Da es sich jedoch möglicherweise um Text handelt, den Sie umbrechen möchten, kann dies nicht der Fall sein. Sie müssen die Breite explizit festlegen.