在RxRichEdit中插入圖片的完美解決方法(不使用剪貼簿) (轉)
例程如下:
設Form1上RxRichEdit1和Button1。
InsertBitmntoRxRichEdit使用方法請見Button1Click方法。
unit Unit1;
interface
uses
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, RxRichEd;
type
TForm1 = class(TForm)
Button1: TButton;
RxRichEdit1: TRxRichEdit;
procedure Button1Click(Sender: T);
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
P = ^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 {pictdibitmap ' + 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:TempUntitled.bmp', RxRichEdit1);
InsertBitmapIntoRxRichEdit('C:TempUntitled-8.jpg', RxRichEdit1);
RxRichEdit1.SetFocus;
end;
end.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991834/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 JS 剪貼簿 APIJSAPI
- 非同步剪貼簿API:解放剪貼簿操作非同步API
- win10沒有剪貼簿如何解決_win10系統沒有剪貼簿的解決教程Win10
- Mac 剪貼簿命令Mac
- Win10系統下剪貼簿歷史記錄失效的解決方法Win10
- windows10系統開啟剪貼簿的方法Windows
- python兩種獲取剪貼簿內容的方法Python
- 獲取拖拽和剪貼簿中的檔案
- Paste:您的Mac剪貼簿管家ASTMac
- 原生JS實現貼上到剪貼簿JS
- 向日葵&&ToDesk複製貼上(無法共享剪貼簿)的解決問題
- win10剪貼簿在哪裡_win10剪貼簿怎麼開啟Win10
- AllClips for mac(剪貼簿管理程式)Mac
- 【Qt 6】讀寫剪貼簿QT
- PasteNow for mac(剪貼簿工具)中文ASTMac
- 剪貼簿操作 Clipboard API 教程API
- 剪貼簿複製貼上操作彙總
- VB 獲取剪貼簿的內容
- Linux下Java剪貼簿的訪問LinuxJava
- ClipboardAction for mac剪貼簿管理器Mac
- ClipboardManager for mac(剪貼簿管理器)Mac
- Paste:Mac剪貼簿歷史的魔法師ASTMac
- Overleaf中插入pdf圖片只顯示圖片路徑的解決方式
- Ember for Mac創意剪貼簿應用Mac
- Async Clipboard API:非同步剪貼簿 APIAPI非同步
- Chrome 66 新增非同步剪貼簿 APIChrome非同步API
- PhotosCollage for Mac(照片剪貼簿製作工具)Mac
- 剪貼簿管理工具:ClipboardAction for MacMac
- ClipboardManager for mac(智慧剪貼簿管理器)Mac
- win10系統怎麼禁用雲剪貼簿跨裝置同步_win10雲剪貼簿跨裝置同步禁用方法Win10
- Evrial:使用剪貼簿盜取比特幣的最新惡意軟體VR比特幣
- mac剪貼簿管理器——Copy+ for macMac
- ClipboardManager for Mac(剪貼簿歷史記錄管理)Mac
- esProc 利用剪貼簿強化 Excel 計算Excel
- Blazor 呼叫 Clipboard API 讀寫剪貼簿資料BlazorAPI
- win10系統windows+v鍵無法開啟剪貼簿怎麼解決Win10Windows
- 小巧好用的mac剪貼簿管理器:iClip Mac版Mac
- Canvas圖形編輯器-我的剪貼簿裡究竟有什麼資料Canvas
- 在stable diffussion中完美修復AI圖片AI