2013-11-26 101 views
2

我想在執行過程中在特定位置的文本塊內添加圖像。我正在做一個遊戲聊天,這些圖像將是表情符號。我想製作一種將圖像放在句子末尾的方法,但是我所做的那個不能很好地工作,因爲表情總是出現在句子的末尾。WPF C#在特定位置插入圖像文本塊(代碼)

聊天應該是這樣的:

玩家1:你好*(圖片)

玩家2:我不想和你講話* 2(鏡像2)

但我聊天是這樣的:

玩家1:你好*

球員:我不想談你* 2(圖片)(鏡像2)

的代碼:

 foreach(char CharOfTheEmoticon in MiChatBox.Text) 
     { 

      if (CharOfTheEmoticon.Equals('*')) 
      { 
      BitmapImage MyImageSource = new BitmapImage(new Uri(@"..\..\..\..\Tarea6\Tarea3Frontend\NewImages\Smile.png", UriKind.Relative)); 
      Image image = new Image(); 
      image.Source = MyImageSource; 
      image.Width = 15; 
      image.Height = 15; 
      image.Visibility = Visibility.Visible; 
      InlineUIContainer container = new InlineUIContainer(image); 
      Run run = new Run(); 
      run.Text = "*"; 
      MiChatBox.Inlines.Add(container); 
      MiChatBox.Inlines.Add(run); 
      } 

     //More if for a differents images 
     } 

圖像的位置由特定的字符表示(例如*○* 2) 我想使用一個正常的TextBlock不是RichTextBlock 我認爲,這是可能使用正常的TextBlock,因爲它可以在xaml中完成。 感謝您的關注,並希望您能幫助我。

回答

4

「MiChatBox.Inlines.Add」它添加在所有的末尾。 這樣,你應該做的:

var strBuild = new StringBuilder(); 
var input = MiChatBox.Text; 
MiChatBox.Text = ""; 

foreach (char CharOfTheEmoticon in input) 
{ 
    strBuild.Append(CharOfTheEmoticon); 

    if (CharOfTheEmoticon == '*') 
    { 

     BitmapImage MyImageSource = new BitmapImage(new Uri(@"..\..\..\..\Tarea6\Tarea3Frontend\NewImages\Smile.png", UriKind.Relative)); 
     Image image = new Image(); 

     image.Source = MyImageSource; 
     image.Width = 15; 
     image.Height = 15; 
     image.Visibility = Visibility.Visible; 
     InlineUIContainer container = new InlineUIContainer(image); 

     var originLastrText = new Run(strBuild.ToString()); 
     MiChatBox.Inlines.Add(originLastrText); 
     MiChatBox.Inlines.Add(container); 

     strBuild.Clear(); 
    } 
} 

var textRem = new Run(strBuild.ToString()); 
MiChatBox.Inlines.Add(textRem); 
+0

最好不要使用StringBuilder,但[的IndexOf(http://msdn.microsoft.com/en-us/library/7cct0x33(V = vs.110)的.aspx) 。 但我沒有權力演示。 – dovid

+0

完美無缺!謝謝 –