C# - 将表情符号添加到WPF应用程序中

时间:2016-06-06 01:36:46

标签: c# .net wpf

我目前正在创建一个侧面项目,用于在C#中使用DuplexChanneling处理双用户通信。

我的问题是实现这个非常简单但又乏味的方面 - 表达。

这是给我带来麻烦的代码:

Hashtable emotions;

    void CreateEmotions()
    {
        emotions = new Hashtable(6);
        emotions.Add(":)", ChattingClient.Properties.Resources.regular_smile);
        emotions.Add(":(", ChattingClient.Properties.Resources.sad_smile);            
    }

    void AddEmotions()
    {
        foreach (string emote in emotions.Keys)
        {
            while (TextBoxDisplay1.Text.Contains(emote))
            {
                int ind = TextBoxDisplay1.Text.IndexOf(emote);
                TextBoxDisplay1.Select(ind, emote.Length);
                Clipboard.SetImage((Image)emotions[emote]);
                TextBoxDisplay1.Paste();
            }
        }
    }

错误是因为 Clipboard.SetImage((Image)emotions[emote]);

它陈述了两个:

  

错误1'System.Windows.Clipboard.SetImage(System.Windows.Media.Imaging.BitmapSource)'的最佳重载方法匹配有一些无效的参数

  

错误2参数1:无法从'System.Windows.Controls.Image'转换为'System.Windows.Media.Imaging.BitmapSource'C:\ Users \ StandardGuy \ Desktop \ ChattingApplication \ ChattingClient \ ChattingClient \ MainWindow.xaml .cs 68 41 ChattingClient

1 个答案:

答案 0 :(得分:1)

  • 导入名称空间以使用BitmapImage和Uri
  • 使用Solution Explorer转到项目的Resources文件夹,然后转到每个图像的属性并将 Build Action 设置为 Resources
Hashtable emotions;

void CreateEmotions()
{
    emotions = new Hashtable(6);
    emotions.Add(":)", new BitmapImage(new Uri("/Resources/name_of_picture1.png", UriKind.Relative)));
    emotions.Add(":(", new BitmapImage(new Uri("/Resources/name_of_picture2.png", UriKind.Relative)));
}

void AddEmotions()
{
    foreach (string emote in emotions.Keys)
    {
        while (TextBoxDisplay1.Text.Contains(emote))
        {
            int ind = TextBoxDisplay1.Text.IndexOf(emote);
            TextBoxDisplay1.Select(ind, emote.Length);
            Clipboard.SetImage((BitmapImage)emotions[emote]);
            TextBoxDisplay1.Paste();
        }

    }

}

希望这有帮助!