我想在执行期间在特定位置的Textblock中添加图像。我正在聊天游戏,这些图像将是表情符号。我想制作一个方法,将图像放在句子的末尾,但是我所做的那个方法效果不好,因为表情符号总是出现在句子的末尾。
聊天应该如下所示:
玩家1:嗨*(图片)
玩家2:我不想和你说话* 2(Image2)
但是我的聊天看起来像这样:
玩家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
}
图像的位置由特定字符表示(例如* o * 2) 我想使用普通的TextBlock而不是RichTextBlock 我认为这可以使用普通的TextBlock,因为它可以在xaml中完成。 感谢您的关注,希望您可以帮助我。
答案 0 :(得分: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);