Сообщение от
_jf_
Мда , давайте в подобных темах выкладывать полные ответы на задаваемые вопросы (неограничиваться одной ссылкой ;)) ? (это намёк ;))
Вставка BitMap в RxRichEdit
В теле программы прописываем следующую функцию:
Код:
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;
Затем используем её:
Код:
PROCEDURE TForm1.RunClick(Sender: TObject);
VAR i: Integer;
BitMap1, BitMap2: TBitMap;
SS:TStringStream;
BMP: TBitMap;
BEGIN
//Вставка картинки
BMP := TBitMap.Create;
TRY
BMP.Assign(Image1.Picture.Bitmap);
SS := TStringStream.Create(BitmapToRTF(BMP));
TRY
RichEdit1.PlainText := False;
RichEdit1.StreamMode := [smSelection];
RichEdit1.Lines.LoadFromStream(SS);
RichEdit1.StreamMode := [];
RichEdit1.Lines.SaveToFile('C:\Мои документы\temp.rtf');
FINALLY
SS.Free;
END
FINALLY
BMP.Free;
END;
ShowMessage('Отчет сохранен: C:\Мои документы\temp.rtf');
END;