Вставка картинки в текст

146
01 августа 2018, 15:40

Нужно вставлять картинки за место слов в тексте в RichTextBox, соответственно что бы обтекание было слева и справа.

Использую сейчас что-то подобное

string[] messageSplit = message.Split(' ');
FlowDocument doc = new FlowDocument();
Paragraph paragraph = new Paragraph();
for (int i = 0; i < messageSplit.Length; ++i) {
            string str = messageSplit[i];
            if (str.Contains("${emoteId=")) {
                string id = ...
                Image image = new Image();
                image.Source = (ImageSource)((new ImageSourceConverter()).ConvertFromString($@"emotes/{id}.png"));
                BlockUIContainer cont = new BlockUIContainer(image);
                Figure figure = new Figure(cont);
                figure.Width = (new FigureLength(24));
                figure.WrapDirection = WrapDirection.Both;
                figure.VerticalAnchor = FigureVerticalAnchor.PageTop;
                figure.HorizontalAnchor = FigureHorizontalAnchor.PageLeft;
                paragraph.Inlines.Add(figure);
            } else {
                paragraph.Inlines.Add(new Run(str));
            }
        doc.Blocks.Add(paragraph);
        MessageText.Document = doc;

Но при такой вставке весь текст что был переносится на верх, а все картинки появляются внизу.

Как сделать правильную вставку в текст?

Сам текст имеет такой вид qqq ${emoteId=4} www ${emoteId=5} ${emoteId=20} eee

Answer 1
string[] messageSplit = message.Split(' ');
            FlowDocument doc = new FlowDocument();
            Paragraph paragraph = new Paragraph();
            for (int i = 0; i < messageSplit.Length; ++i) {
                string str = messageSplit[i];
                if (str.Contains("${emoteId=")) {
                    string id = ...

                    Image image = new Image();
                    image.Source = (ImageSource)((new ImageSourceConverter()).ConvertFromString($@"emotes/{id}.png"));
                    image.Width = 28;
                    InlineUIContainer inlineUIContainer = new InlineUIContainer(image);
                    paragraph.Inlines.Add(inlineUIContainer);
                    paragraph.Inlines.Add(" ");
                } else {
                    paragraph.Inlines.Add(str + " ");
                }
            }
            doc.Blocks.Add(paragraph);
            MessageText.Document = doc;
READ ALSO
Как отследить событие со всех CheckBox?

Как отследить событие со всех CheckBox?

Имеется вот такая панель кнопок, в ScrollViewer1 вложен StackPanel с сотней кнопок, на каждой кнопке SteckPanel с Image, CheckBox и TextBlock, CheckBox управляет видимостью...

157
Как соединится с базой данных opencart

Как соединится с базой данных opencart

На сайте есть скрипт обработчик, при попытке соединится через mysql_connect ничего не получаетсяСкрипт лежит просто в корневой папке

192
Рассылка почты из php скрипта через smtp

Рассылка почты из php скрипта через smtp

Здравствуйте, решил сделать рассылку писем через smtp, используя данный скрипт на php:http://i-leonru/smtp-php/

178
Добавление записей в БД через PHP

Добавление записей в БД через PHP

Во-первых, в моем коде запись в БД почему-то добавляется через форму, но не во все поля

210