- function BitmapToRtf(graph:TBitmap):string;
- var
- bi, bb, rtf:string;
- bis, bbs:cardinal;
- achar:ShortString;
- HexGraph:string;
- I:Integer;
- begin
- GetDIBSizes(graph.Handle, bis, bbs);
- SetLength(bi,bis);
- SetLength(bb,bbs);
- GetDIB(graph.Handle, graph.Palette, PChar(bi)^, PChar(bb)^);
- rtf:='{\rtf1 {\pict\dibitmap ';
- SetLength(HexGraph,(Length(bb) + Length(bi)) * 2);
- I:=2;
- For bis:=1 to Length(bi) do
- begin
- achar:=Format('%x',[Integer(bi[bis])]);
- if Length(achar)=1 then achar:='0'+achar;
- HexGraph[I-1]:=achar[1];
- HexGraph[I]:=achar[2];
- Inc(I,2);
- end;
- For bbs:=1 to Length(bb) do
- begin
- achar:=Format('%x',[Integer(bb[bbs])]);
- if Length(achar)=1 then achar:='0'+achar;
- HexGraph[I-1]:=achar[1];
- HexGraph[I]:=achar[2];
- Inc(I,2);
- end;
- rtf:=rtf + HexGraph + ' }}';
- Result:=rtf;
- end;
-
- procedure TForm1.Button1Click(Sender: TObject);
- var
- SS:TStringStream;
- begin
- SS:=TStringStream.Create(BitmapToRtf(Image1.Picture.Bitmap));
- RxRichEdit1.PlainText:=False;
- RxRichEdit1.StreamMode:=[smSelection];
- RxRichEdit1.Lines.LoadFromStream(SS);
- SS.Free;
- end;
function BitmapToRtf(graph:TBitmap):string;
var
bi, bb, rtf:string;
bis, bbs:cardinal;
achar:ShortString;
HexGraph:string;
I:Integer;
begin
GetDIBSizes(graph.Handle, bis, bbs);
SetLength(bi,bis);
SetLength(bb,bbs);
GetDIB(graph.Handle, graph.Palette, PChar(bi)^, PChar(bb)^);
rtf:='{\rtf1 {\pict\dibitmap ';
SetLength(HexGraph,(Length(bb) + Length(bi)) * 2);
I:=2;
For bis:=1 to Length(bi) do
begin
achar:=Format('%x',[Integer(bi[bis])]);
if Length(achar)=1 then achar:='0'+achar;
HexGraph[I-1]:=achar[1];
HexGraph[I]:=achar[2];
Inc(I,2);
end;
For bbs:=1 to Length(bb) do
begin
achar:=Format('%x',[Integer(bb[bbs])]);
if Length(achar)=1 then achar:='0'+achar;
HexGraph[I-1]:=achar[1];
HexGraph[I]:=achar[2];
Inc(I,2);
end;
rtf:=rtf + HexGraph + ' }}';
Result:=rtf;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
SS:TStringStream;
begin
SS:=TStringStream.Create(BitmapToRtf(Image1.Picture.Bitmap));
RxRichEdit1.PlainText:=False;
RxRichEdit1.StreamMode:=[smSelection];
RxRichEdit1.Lines.LoadFromStream(SS);
SS.Free;
end;