本帖最后由 seasonhdyy 于 2013-04-10 23:31:24 编辑

解决方案 »

  1.   

    我有个思路.首先我用的是RIchtetbox.我把他重写了可以显示GIF图片,/// <summary>
            /// 添加一个文件资源到RTF数据
            /// </summary>
            /// <param name="p_FileFullPath">文件路径</param>    
            public void AddFile(string p_FileFullPath)
            {
                int i = p_FileFullPath.LastIndexOf(@"\");
                string dasdasd = p_FileFullPath.Substring(i, p_FileFullPath.Length - i);
                dasdasd = dasdasd.Substring(1, dasdasd.Length - 2);
                dasdasd = dasdasd.Replace("-", "");
                dasdasd = dasdasd.Substring(0, dasdasd.Length - 3).ToUpper();
                byte[] _FileBytes = File.ReadAllBytes(p_FileFullPath);
                Image _Image = Image.FromStream(new MemoryStream(_FileBytes));
                string _Guid = BitConverter.ToString(Guid.NewGuid().ToByteArray()).Replace("-", "");
                StringBuilder _RtfText = new StringBuilder(@"{\rtf1\ansi\ansicpg936\deff0\deflang1033\deflangfe2052{\fonttbl{\f0\fnil\fcharset134 \'cb\'ce\'cc\'e5;}}\uc1\pard\lang2052\f0\fs18{\object\objemb{\*\objclass Paint.Picture}");//
                int _Width = _Image.Width * 15;
                int _Height = _Image.Height * 15;
                _RtfText.Append(@"\objw" + _Width.ToString() + @"\objh" + _Height.ToString());
                _RtfText.AppendLine(@"{\*\objdata");
                _RtfText.AppendLine(@"010500000200000007000000504272757368000000000000000000" + BitConverter.ToString(BitConverter.GetBytes(_FileBytes.Length + 20)).Replace("-", ""));
                _RtfText.Append("7A676B65" + dasdasd);//标记
                //_RtfText.Append("7A676B65" + _Guid);
                _RtfText.AppendLine(BitConverter.ToString(_FileBytes).Replace("-", ""));
                _RtfText.AppendLine(@"0105000000000000}{\result{\pict\wmetafile0}}}}");       
                base.SelectedRtf = _RtfText.ToString();
            }这个是代码.就是显示GIF用的.其中有一段使用到了GUID的这个.唯一标识.我就让图片的名称变成唯一标识符号.这样.在rtf中就可以直接获取"7A676B65"后面的32位就是图片的名称.在稍微处理下加上'-' .gif 就出来了图片的名称.我想了几天才想到 的哦.亲.有什么我没说清楚的就问我.我就不能提供详细的代码给你了,因为我也是一个小菜鸟.只是想到了思路.
      

  2.   

    用JQ来套一个div层不知道行不行
      

  3.   

    关键在于要插进RTF格式里面,并且还能正确读取出来。同时不能牺牲太多的系统资源。而RichTextBox控件会对插进去的内容进行过滤。不懂的参数它就自动抛弃,导致了插图片和ID进去再读取出来,就只能读出图片而不能读出ID了。
      

  4.   

    这个我没试过,不过我现在主要愁的是在RichTextBox中对RTF格式的字符串的自定义的操作。毕业设计就差点毁在这上面了
      

  5.   

    这个我看了一下,我觉得既然使用了object对象,还没准儿能把参数保留下来。是个很好的思路。不过早过了我毕业设计完成的时间了呵呵~···希望后面能有谁来研究一下。我最后还是采用了牺牲像素点的方式。最近在弄一个论坛帖子自动下载器。这方面也就开始落下了。谢谢~