可否进一步说明一下?目前逻辑:
假设我粘贴或者拖拽一个图片文件导richtextbox中,我看了richtextbox的底层一共有两种实现方式:
1. SendMessage(0x302, 0, 0); 相当于调用了粘贴功能
2. this.richtextbox1.InsertImage(Image _image)
这是一个扩展的方法,主要就是通过一系列分析,把图片的二进制流循环写成字符串类型的16进制得到所谓的RTF格式,
类似于:
{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fnil\fcharset134 \'ce\'a2\'c8\'ed\'d1\'c5\'ba\'da;}}
\viewkind4\uc1\pard\lang2052\f0\fs20{\pict\wmetafile8\picw6534\pich5423\picwgoal3704\pichgoal3074
[0100090000031c2a01000000062a01000000050000000b0200000000050000000c022f15861906
2a0100430f2000cc000000cd00f700000000002f1586190000000028000000f7000000cd000000
0100180000000000c8530200c40e0000c40e00000000000000000000d47807d47807d47807d57a
07d57908d47807d47807d47807d47807d57908d47807d57908d47906d47906d57a07d57a07d57a
07d67906d67906d77a07d77a07d57a07d57a07d57a07d67b08d57a07d47906d57a07d77c09d67b
08d67b08d67b08d67b08d77c09d77c09d77c09d77c09d67b08d77c09d67b08d67b08d67b08d77c]
开头是一些表示图片的属性,中括号中的是这么得来的
byte[] _buffer = new byte[_bufferSize]; //假设这就是图片的二进制流
StringBuilder _rtf = null;
for (int i = 0; i < _buffer.Length; ++i)
{
_rtf.Append(String.Format("{0:X2}", _buffer[i]));
}
假设我粘贴或者拖拽一个图片文件导richtextbox中,我看了richtextbox的底层一共有两种实现方式:
1. SendMessage(0x302, 0, 0); 相当于调用了粘贴功能
2. this.richtextbox1.InsertImage(Image _image)
这是一个扩展的方法,主要就是通过一系列分析,把图片的二进制流循环写成字符串类型的16进制得到所谓的RTF格式,
类似于:
{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fnil\fcharset134 \'ce\'a2\'c8\'ed\'d1\'c5\'ba\'da;}}
\viewkind4\uc1\pard\lang2052\f0\fs20{\pict\wmetafile8\picw6534\pich5423\picwgoal3704\pichgoal3074
[0100090000031c2a01000000062a01000000050000000b0200000000050000000c022f15861906
2a0100430f2000cc000000cd00f700000000002f1586190000000028000000f7000000cd000000
0100180000000000c8530200c40e0000c40e00000000000000000000d47807d47807d47807d57a
07d57908d47807d47807d47807d47807d57908d47807d57908d47906d47906d57a07d57a07d57a
07d67906d67906d77a07d77a07d57a07d57a07d57a07d67b08d57a07d47906d57a07d77c09d67b
08d67b08d67b08d67b08d77c09d77c09d77c09d77c09d67b08d77c09d67b08d67b08d67b08d77c]
开头是一些表示图片的属性,中括号中的是这么得来的
byte[] _buffer = new byte[_bufferSize]; //假设这就是图片的二进制流
StringBuilder _rtf = null;
for (int i = 0; i < _buffer.Length; ++i)
{
_rtf.Append(String.Format("{0:X2}", _buffer[i]));
}
for (int i = 0; i < _buffer.Length; ++i)
{
_rtf.Append(String.Format("{0:X2}", _buffer[i]));
}
这个循环把图片的二进制流按个解析成了字符串类型标识的16进制,结合RTF的头,
组合成最终的RTF赋值给ExRichTextBox就将图片显示出来了,
反过来提取图片的时候,也要将16进制字符串解析成byte数组,再转化成图片,效率太低
QQ很多表情都是本地的。然后发的代号。比如表情01代表微笑。这样就没网络传输性能问题
this.richtextbox1.Rtf = xxx.
这样才能展示成图片,目前就是二进制转化为RTF,以及RTF解析成二进制流速度慢富文本框没有直接把二进制流变成图片的方法
Image image = Image.FromFile(@"c:\1.jpg");
放进富文本框还是要走如下步骤
image -> byte数组->RTF->富文本框.Rtf = rTF;才能将图片展示出来
如果用
this.picturebox1.Image = image;
this.richtextbox.controls.add(picturebox1);
我也试过了,效果不行的
你留个邮箱地址,我发你好么?我很早就下载的了,不过我没研究,没时间
[email protected] 嗯,谢谢了
你留个邮箱地址,我发你好么?我很早就下载的了,不过我没研究,没时间
[email protected] 嗯,谢谢了
http://download.csdn.net/tag/.net版本仿qq2013源码
上面是个地址,你自己看看哪个符合你的,我的我等下发你邮箱
你留个邮箱地址,我发你好么?我很早就下载的了,不过我没研究,没时间
[email protected] 嗯,谢谢了
http://download.csdn.net/tag/.net版本仿qq2013源码
上面是个地址,你自己看看哪个符合你的,我的我等下发你邮箱
我都下载来看过了,没有符合我要求的,高仿都是界面,功能最多也是做到RTF,第一页的我都下载看过了,不过还是谢谢你
你留个邮箱地址,我发你好么?我很早就下载的了,不过我没研究,没时间
[email protected] 嗯,谢谢了
http://download.csdn.net/tag/.net版本仿qq2013源码
上面是个地址,你自己看看哪个符合你的,我的我等下发你邮箱
发给你的被QQ管家查杀了,郁闷
http://download.csdn.net/detail/lyx_520/5304315这是我当初下的源码地址,上面发的也可以下的
你留个邮箱地址,我发你好么?我很早就下载的了,不过我没研究,没时间
[email protected] 嗯,谢谢了
http://download.csdn.net/tag/.net版本仿qq2013源码
上面是个地址,你自己看看哪个符合你的,我的我等下发你邮箱
发给你的被QQ管家查杀了,郁闷
http://download.csdn.net/detail/lyx_520/5304315这是我当初下的源码地址,上面发的也可以下的
有几个是钓鱼程序,我看了源码,后台自动把前台输入的账号密码,发送给一个邮件的
我写的c# winform 聊天通讯工具,请问如何用HTML的解决方案?求指教
可在广域网部署运行的QQ高仿版 -- GG2013总览
加我QQ也行,GG用的也是我的界面库,作者在我群里。我QQ是:345015918。
1.不能直接发RTF,因为需要电脑和手机通讯
2.如果richtextbox支持 \jpegblip 这种情况的话,可以避开wmetafile8
{\shp{\*\shpinst{\pict\wmetafile8\...
0100090000035b0000000200080...[这是wmf图元文件16进制字符串]
}}}
但是我反复尝试和查阅国内外资料,结果使用如下rtf格式:
{\shp{\*\shpinst{\pict\wmetafile8\...
ffff8edfd.....[这是jpeg的16进制字符串]
}}}取得了进一步的结果就是,word文档支持...richtextbox仍然不支持
不适用wmetafile8这种情况是因为超过2M图片,图片解析成RTF以及RTF解析成图片速度太慢了
3.自定义OLE对象,插入到richtextbox 暂时还没有进行这样的尝试
你留个邮箱地址,我发你好么?我很早就下载的了,不过我没研究,没时间也给我发一份好不???[email protected]
你留个邮箱地址,我发你好么?我很早就下载的了,不过我没研究,没时间也给我发一份好不???[email protected]
你到我上面发的链接去下,QQ邮箱发了它会把它杀掉的,发不出去的
你留个邮箱地址,我发你好么?我很早就下载的了,不过我没研究,没时间也给我发一份好不???[email protected]
[精仿]QQ2013局域网通讯(10.30更新版-带最新版界面库)
1.不能直接发RTF,因为需要电脑和手机通讯
2.如果richtextbox支持 \jpegblip 这种情况的话,可以避开wmetafile8
{\shp{\*\shpinst{\pict\wmetafile8\...
0100090000035b0000000200080...[这是wmf图元文件16进制字符串]
}}}
但是我反复尝试和查阅国内外资料,结果使用如下rtf格式:
{\shp{\*\shpinst{\pict\wmetafile8\...
ffff8edfd.....[这是jpeg的16进制字符串]
}}}取得了进一步的结果就是,word文档支持...richtextbox仍然不支持
不适用wmetafile8这种情况是因为超过2M图片,图片解析成RTF以及RTF解析成图片速度太慢了
3.自定义OLE对象,插入到richtextbox 暂时还没有进行这样的尝试
实在不行就用picubox加入richtextbox代替图片吧。就想用gifbox加入richtextbox做gif表情一样。可以用个集合存储加入的图片。