例程如下:
设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.
没有相关教程
|