【发布时间】:2018-01-08 09:52:14
【问题描述】:
我在这里想要完成的是能够添加这样的文本消息:
为了能够制作一个聊天框,我可以说 1000 条消息,就像这样.. 所以我创建了一个自定义 RichTextBox,如下所示:
public class CustomRichTextBox : RichTextBox
{
public CustomRichTextBox()
{
}
public static byte[] ImageToByte(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
public static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}
public void AddPic(Image img)
{
string imgStr = ByteArrayToString(ImageToByte(img));
string mpic = @"{\pict\pngblip\picw" +
img.Width.ToString() + @"\pich" + img.Height.ToString() +
@"\picwgoal" + img.Width.ToString() + @"\pichgoal" + img.Height.ToString() +
@"\hex " + imgStr + "}";
Rtf += mpic + " Username \r\n Said!...";
}
}
但是 RichTextBox 上没有真正显示,我在这里缺少什么!?我只是想让它显示头像和旁边的一段,稍后我将更改font/color etc
【问题讨论】:
-
使用带有 RTB 的 UserControl 和其他一些可以显示图像的控件,如图片框、标签、面板等。 - 请注意,RTB 既没有 Padding 也没有 Paint 事件,因此尝试对其进行子类化效果不好。
-
@TaW 做一个基本的聊天消息不会太多控制吗?
-
没有。实际上,如果您关心效率,您甚至不应该使用 RTB!而是将所有东西都绘制到面板上!这是最便宜和最灵活的设计。使用一个文本框输入文本并绘制所有以前的消息!
-
或者看here
-
@Taw 我认为附加/编辑文本比重绘整个
panel以显示 1000 条消息更好/更有效!
标签: c# winforms richtextbox rtf richtext