unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, RxCombos, Mask, ToolEdit, Animate, RxRichEd, CurrEdit,
RXDBCtrl, ImgList, ExtDlgs;
type
TForm1 = class(TForm)
RxRichEdit1: TRxRichEdit;
ImageList1: TImageList;
Button1: TButton;
Button2: TButton;
OpenPictureDialog1: TOpenPictureDialog;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
JPEG,Clipbrd;
{$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 + ' }}';
ShowMessage(inttostr(length(Result)));
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('F:/Myprogram/save/picture/a.jpg', RxRichEdit1);
RxRichEdit1.SetFocus;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Pict :TPicture;
begin
with OpenPictureDialog1 do begin
if Execute then begin
Pict := TPicture.Create;
try
Pict.LoadFromFile(FileName);
Clipboard.Assign(Pict);
RxRichEdit1.PasteFromClipboard;
finally
Pict.Free;
end;
end;
end;
RxRichEdit1.Lines.SaveToFile('c:/a.txt');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
end.