110,538
社区成员
发帖
与我相关
我的任务
分享
/// <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 就出来了图片的名称.我想了几天才想到 的哦.亲.有什么我没说清楚的就问我.我就不能提供详细的代码给你了,因为我也是一个小菜鸟.只是想到了思路.