我正在开发一个聊天应用程序项目,用户通过TCP / IP套接字相互通信,这很好。聊天室中的人可以共享文件,图像,当然还有纯文本。我正在使用RichTextBox向客户端显示消息和图像。
下面列出了有关RichTextBox的观察结果:
RichTextBox与纯文本一起使用非常好(非常快速且健壮)
当用户粘贴一定数量的图片时,稍后会非常慢并最终开始崩溃。
所以我的问题是,在这里实现目标的更好方法是什么?
可以使用什么控件代替RichTextBox来显示消息和图像? (无需编辑,只是为了显示消息)
我读到WPF的richtextbox比旧的WinForms Richtextbox更好。这在绩效方面是否正确?
在我的情况下切换到WPF是不可能的,我知道Winforms可以托管WPF元素。是否可以使用Winform主机的WPF RichTextBox编辑器? (添加图像,段落,设置FontColors,FontTypes等。)
答案 0 :(得分:0)
您是否真的需要在聊天应用程序中使用完整的RichTextEditing?在我看来,聊天应该由一个字体样式等组成。例如,为什么有人将文本布局为中心或某事。我只需构建一个Container(UserControl,Panel等),为文本/图片添加标签或图片编辑。因此,对于每条消息,您都可以添加标签,并为每张图片添加图片编辑。因此,您可以像WhatsApp或其他常见信使一样从上到下获得流量。
如果你真的需要完整的RichTextEditing功能,我仍然可以从文本部分分离图像并按上面所述进行构建。而不是标签,你现在使用许多readonly richtextedits。图像也以图片编辑方式显示。
优点是你不会变得大而且丰富的richtextedits,因为你分开了图像。此外,您将成为从上到下排列的不同框中显示的消息流,其中底部是最新的。这使您有机会仅显示最后10条消息。如果用户想要查看更多内容,则必须重新加载旧帖子。因此,您始终只显示10条(或任何您想要的)消息,这将使内存占用空间变小。
此外,如果图像大或只允许固定大小,您可以压缩图像。所以没有人用高分辨率图像减慢你的聊天速度。
如果没有第三方控件,我认为到目前为止您还没有替代richtext的所有这些编辑功能。如果你只需要显示格式化的东西,你可以尝试WebBrowser-Control并将你的rtf转换为html。但我不知道这是否更加轻量级。
提示:确保处置RichTextEdits,您不再需要它。
这是一个link,它描述了如何在Winforms-Application中托管WPF-Control。不要以为这会给你带来任何好处,但如果你想尝试一下,那就去吧;)。
我希望这对你有所帮助。