【问题标题】:c# WPF display colored emoji instead of black and whitec# WPF 显示彩色表情符号而不是黑白
【发布时间】:2021-06-03 17:05:22
【问题描述】:

我正在 WPF 中创建聊天,并试图让用户可以发送表情符号。用户在TextBox 中写了一条消息,他可以打开带有表情符号的菜单并选择一些。一个问题是表情符号不是彩色的,而是黑白的。

我尝试使用emoji.wpf,但它仅适用于RichTextBox(我也需要buttons 和TextBox)并且表情符号的渲染速度非常缓慢。有时我读到唯一的解决方案是将表情符号作为图片插入。这是真的还是存在更好的解决方案?建议将表情符号作为 unicode 字符,而不是图片。

对不起我的英语,我来自捷克共和国。

【问题讨论】:

  • 据我所知,WPF 目前不支持彩色字体。所以你必须使用各种“hacks”,比如你提到的一个库中使用的。
  • @Evk 谢谢你,你知道一些好的图书馆吗?
  • 只有你已经提到的那个:)

标签: c# wpf emoji


【解决方案1】:

我写了 Emoji.Wpf;这里有几个cmets:

  • 有一个Image 类可以在Button 中轻松使用。参见例如the font viewer sample,它使用这样的简单 XAML:<emoji:Image Width="44" Height="44" Text="{Binding UnicodeText}"/>

  • 颜色表情符号TextBox 的子类是相当困难的,因为它只支持单一字体和字体样式;覆盖渲染代码似乎很困难,而且我还不够熟练。

字体查看器如下所示:

【讨论】:

  • 谢谢,我不知道这门课。 TextBox 中的彩色表情符号不是很重要,但我需要更快地渲染 RichTextBox 中的表情符号。早些时候,当用户发送消息时,该消息立即添加到RichTextBox。现在RichTextBox 卡住了,消息只会在一段时间后出现。另一个缺点是我无法更改文本不同部分的字体颜色。
【解决方案2】:

我发现了一个非常简单且很棒的方法!

只需添加一个名为 "Emoji.Wpf" 的 Nuget 包并按如下方式使用它:

<Window ...
        xmlns:emoji="clr-namespace:Emoji.Wpf;assembly=Emoji.Wpf"
        ...>
    ...
    <emoji:TextBlock FontSize="24" Text="????‍???‍??‍??"/>
    ...
</Window>

它适用于我的 WPF 应用程序。

更多信息在它的项目网站:

https://github.com/samhocevar/emoji.wpf

【讨论】:

  • 太棒了!看起来他们从 0.1.1 版开始增加了支持
  • 这是富文本的包装器。不幸的是,没有那么快。
  • @YurySchkatula 因为我只使用了一些表情符号,所以对我来说没问题。
  • @DavidMoškoř 接受 Sam 的回答不是更好吗?他是图书馆的作者,3年前就已经指向图书馆了。也许编辑他的答案以使其保持最新。
猜你喜欢
  • 2018-07-10
  • 1970-01-01
  • 2019-08-22
  • 2021-05-16
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2022-08-07
  • 1970-01-01
相关资源
最近更新 更多