WPF 应用程序中 TextBlock 中的图释

Emoticons in TextBlock in WPF application

我想在 WPF 聊天应用程序中添加表情符号。我知道 wpf 不支持表情符号,因此我用图像替换表情符号。我正在使用 textBlock 的内联 属性 将图像添加到 textBlock,但是我在图像对齐方面遇到了问题。我无法使表情符号图像正确对齐。我正在分享它的外观截图。

Screenshot of app window

This is how emoticon is looking

该示例只是一个演示,我在构造函数中添加元素只是为了看看它的外观。我也在分享我的代码。

        @out.Inlines.Add(new Run("Hii, my name is Ajay!!"));
        Image emo = new Image();
        emo.Height = 15;
        emo.Width = 15;
        emo.VerticalAlignment = VerticalAlignment.Bottom;
        emo.Margin = new Thickness(3, 0, 0, 0);
        emo.Source = new BitmapImage(new Uri(@"C:\Users\admin\Desktop\test1.jpg", UriKind.RelativeOrAbsolute));
     // InlineUIContainer container = new InlineUIContainer(emo);
        @out.Inlines.Add(emo);

有什么方法可以让表情图片正确对齐?可以使用文本块还是我应该为此使用任何其他控件?

非常感谢任何帮助。

一些可能的选择可能是:

设置图像的 Top 边距。格式为LEFT, TOP, RIGHT, BOTTOM

emo.Margin = new Thickness(3, 4, 0, 0);

另一种选择是将图像包装在 运行 中并设置 BaselineAlignmenthttps://msdn.microsoft.com/en-us/library/system.windows.baselinealignment

var imageRun= new Run(emo);
imageRun.BaselineAlignment = BaselineAlignment.TextBottom; //experiment with the other enum options
@out.Inlines.Add(imageRun);

调整文本而不是图像(尽管我会继续尝试使用图像并将其用作最后的手段)。

var textRun = new Run("Hii, my name is Ajay!!");
textRun.Margin = experiment;
textRun.BaselineAlignment = experiment;
@out.Inlines.Add(textRun );

我按照@Bill Tarbell 的建议进行了尝试,它对我有用。 最终工作代码如下:

        var textRun = new Run("Hii, my name is Ajay!!");
        textRun.BaselineAlignment = BaselineAlignment.Center;
        @out.Inlines.Add(textRun);
        Image emo = new Image();
        emo.Height = 20;
        emo.Width = 20;
        emo.VerticalAlignment = VerticalAlignment.Bottom;
        emo.Margin = new Thickness(3, 0, 0, 0);
        emo.Source = new BitmapImage(new Uri(@"C:\Users\admin\Desktop\test1.jpg", UriKind.RelativeOrAbsolute));
       // InlineUIContainer container = new InlineUIContainer(emo);
        @out.Inlines.Add(emo)