RichTextBox с изображениями - проблема с межстрочным интервалом - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть эта проблема.Я добавляю изображения (улыбки) в элемент управления richTextBox из Extended WPF Toolkit.

В функции преобразования простого текста в текст с изображениями я устанавливаю высоту строки абзаца, а этот абзац я добавляю в блоки richTextBox.Вот оно:

private void RpTextToTextWithEmoticons(string msg)
{
    //set line height
    var para = new Paragraph {LineHeight = 40};

    var r = new Run(msg);

    para.Inlines.Add(r);

    string emoticonText = GetEmoticonText(r.Text);

    //if paragraph does not contains smile only add plain text to richtextbox rtb2
    if (string.IsNullOrEmpty(emoticonText))
    {
        RtbConversation.Document.Blocks.Add(para); 
    }
    else
    {
        while (!string.IsNullOrEmpty(emoticonText))
        {

            TextPointer tp = r.ContentStart;

            // keep moving the cursor until we find the emoticon text
            while (!tp.GetTextInRun(LogicalDirection.Forward).StartsWith(emoticonText))

                tp = tp.GetNextInsertionPosition(LogicalDirection.Forward);

            // select all of the emoticon text
            var tr = new TextRange(tp, tp.GetPositionAtOffset(emoticonText.Length)) { Text = string.Empty };

            //relative path to image smile file
            string path = _mappings[emoticonText];

            var image = new Image
            {
                Source = new BitmapImage(new Uri(path, UriKind.RelativeOrAbsolute)),
                Width = 30,
                Height = 30,
            };

            //insert smile
            new InlineUIContainer(image, tp);

            if (para != null)
            {
                var endRun = para.Inlines.LastInline as Run;

                if (endRun == null)
                {
                    break;
                }
                else
                {
                    emoticonText = GetEmoticonText(endRun.Text);
                }

            }
        }
        RtbConversation.Document.Blocks.Add(para);
    }
}

Но если я добавлю новые абзацы в блоки, все абзацы будут иметь различную высоту / интервал между строками.Мне нужна постоянная высота строки / расстояние между отдельными абзацами, что-то вроде чата в скайпе.

Моя проблема, которую вы можете увидеть на изображении: alt text

Где может быть проблема, я беспомощен.Спасибо за любое продвижение.

1 Ответ

0 голосов
/ 02 декабря 2010
...