设Form1上控件RxRichEdit1和Button1。 InsertBitmapIntoRxRichEdit使用方法请见Button1Click方法。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, RxRichEd; type TForm1 = class(TForm) Button1: TButton; RxRichEdit1: TRxRichEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses JPEG; {$R *.dfm} function ConvertBitmapToRTF(const Bitmap: 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; for bis := 1 to Length(bi) do begin achar := IntToHex(Integer(bi[bis]), 2); PWord(@Buffer[i])^ := PWord(@achar[1])^; inc(i, 2); end; for bbs := 1 to Length(bb) do begin achar := IntToHex(Integer(bb[bbs]), 2); PWord(@Buffer[i])^ := PWord(@achar[1])^; inc(i, 2); end; Result := '{\rtf1 {\pict\dibitmap ' + Buffer + ' }}'; end; procedure InsertBitmapIntoRxRichEdit(const Bitmap: TBitmap; const RxRichEdit: TRxRichEdit); overload; begin RxRichEdit.SelText := ConvertBitmapToRTF(Bitmap); RxRichEdit.SelLength := 0; RxRichEdit.SelStart := RxRichEdit.SelStart + 1; end; procedure InsertBitmapIntoRxRichEdit(const GraphicFileName: string; const RxRichEdit: TRxRichEdit); overload; var Bitmap: TBitmap; Graphic: TPicture; begin Graphic := TPicture.Create; try Graphic.LoadFromFile(GraphicFileName); if Graphic.Graphic is TBitmap then Bitmap := Graphic.Bitmap else begin Bitmap := TBitmap.Create; Bitmap.Assign(Graphic.Graphic); end; InsertBitmapIntoRxRichEdit(Bitmap, RxRichEdit); finally if Bitmap <> Graphic.Bitmap then FreeAndNil(Bitmap); FreeAndNil(Graphic); end; end; procedure TForm1.Button1Click(Sender: TObject); begin //InsertBitmapIntoRxRichEdit('C:\Temp\Untitled.bmp', RxRichEdit1); InsertBitmapIntoRxRichEdit('C:\Temp\Untitled-8.jpg', RxRichEdit1); RxRichEdit1.SetFocus; end; end. |
|
来自: 博览网文 > 《richedit相关》