如题,在http://topic.csdn.net/u/20080320/14/789ad815-1209-460c-8466-7ee00515d1a4.html?seed=946507897这个帖子中我提出来了,但是问题没有得到解决,请帮忙看看。我的界面中用到了richeditctrl控件,我在保存文字信息的时候用streamout方式序列化保存成人rtf格式,读入时用到了streamIn方式,文字信息可以保存了,如图 
在程序中我需要把当前的界面保存为一张图片,目前我保存出来的是下图这样子的,存在偏差(也就是文字的时候我直接输出的是那一串rtf格式串),请问如何根据rtf格式的这个字符串绘制到图像上(注:我的图像是一些BitBlt合成的图像,文字的部分我现在是用DrawText在相应的区域写上去的。)

解决方案 »

  1.   


    CFile   cFile(TEXT(sFileName),   CFile::modeCreate|CFile::modeWrite);   

    EDITSTREAM   es;   
    es.dwError   =   0;   
    es.pfnCallback   =   MyStreamOutCallback;   
    es.dwCookie   =   (DWORD)   &cFile;  
    m_ComRichEdit.StreamOut(SF_RTF,   es);
      

  2.   

    1楼没有理解这个意思。你的代码是将RichEditCtrl内容格式化成rtf形式。包括StreamIn这些我都做到了。在界面上没有问题,就是生成图片的时候不知道怎么在图像中相应的区域还原出原来的格式字符串。
      

  3.   

    1、研究rtf格式,将整个编辑框内的内容分成一些片段,最后用gdi或者gdi+绘制到图像上。2、在你编辑的时候,生成相应的xml文件,在这个文件中存有一系列信息,如文本内容,字体,字体大小以及是否有回车等节点。然后在保存图的时候读取这个xml文件,一步一步绘制文本。