引用2楼LCPDtiger的回复:引用1楼simonhehe的回复:我用Trichedit试了下,执行插入图片操作,多加[{/rtf1{/pict/dibitmap?]字符串
请能详细说明一下吗,我用的是rxrichedit控件,用BmpToRtf()函数返回的时候会加上那个字符串,但是在text属性里面不会显示出来
估计得找rxrichedit的原因了,我测试代码如下
uses
JPEG,Clipbrd;
{$R*.dfm}
functionBMPToRTF(constBitmap:TBitmap):string;
var
bi,bb:string;
bis,bbs:Cardinal;
achar:string[2];
Buffer:string;
I:Integer;
type
PWord=^Word;
begin
GetDIBSizes(Bitmap.Handle,bis,bbs);
SetLength(bi,bis);
SetLength(bb,bbs);
GetDIB(Bitmap.Handle,Bitmap.Palette,PChar(bi)^,PChar(bb)^);
SetLength(Buffer,(Length(bb)+Length(bi))*2);
i:=1;
forbis:=1toLength(bi)do
begin
achar:=IntToHex(Integer(bi[bis]),2);
PWord(@Buffer)^:=PWord(@achar[1])^;
inc(i,2);
end;
forbbs:=1toLength(bb)do
begin
achar:=IntToHex(Integer(bb[bbs]),2);
PWord(@Buffer)^:=PWord(@achar[1])^;
inc(i,2);
end;
Result:='{/rtf1{/pict/dibitmap'+Buffer+'}}';
ShowMessage(inttostr(length(Result)));
end;
procedureTForm13.btn1Click(Sender:TObject);
begin
redt1.seltext:=BMPToRTF(img1.Picture.Bitmap);
redt1.sellength:=0;
redt1.selstart:=redt1.selstart+1;
end;
|