Вставляем битмап в RichEdit или RichTextBox.

Ниже представлен пример, который можно применить к RxRichEdit, RichEditEx, RichEdit98, и Microsoft RichTextBox (поставляемый с VB5+) не прибегая к использованию буфера обмена или OLE:

function
 BitmapToRTF(pict: TBitmap): string;
var

  bi,bb,rtf: string
;
  bis,bbs: Cardinal;
  achar: ShortString;
  hexpict: string
;
  I: Integer;
begin

  GetDIBSizes(pict.Handle,bis,bbs);
  SetLength(bi,bis);
  SetLength(bb,bbs);
  GetDIB(pict.Handle,pict.Palette,PChar(bi)^,PChar(bb)^);
  rtf := '{\rtf1 {\pict\dibitmap '
;
  SetLength(hexpict,(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;
    hexpict[I-1
] := achar[1];
    hexpict[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;
    hexpict[I-1
] := achar[1];
    hexpict[I] := achar[2
];
    Inc(I,2
);
  end
;
  rtf := rtf + hexpict + ' }}'
;
  Result := rtf;
end
;

А вот пример использования этой функции:

{SS это TStringStream, RE это TRxRichEdit, а BMP это TBitmap содержащий картинку.}
SS := TStringStream.Create(BitmapToRTF(BMP));
RE.PlainText := False;
RE.StreamMode := [smSelection];
RE.Lines.LoadFromStream(SS);
SS.Free;




караоке клуб итальянские межкомнатные двери Гостиница от 350 руб/час: гостиница сфера калуга.