|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RichEditをBitmapに描画する"
Title: RichEditをBitmapに描画する
リッチエディットの内容をビットマップに描画するサンプルコード
です。
uses RichEdit;
function DrawRidhEditToBitmap(Bitmap: TBitmap; RichEdit: TRichEdit;
TextStart, TextEnd: Integer): Integer;
var
Range: TFormatRange;
OldMap: Integer;
begin
with Range do
begin
hdc := Bitmap.Canvas.Handle;
hdcTarget := hdc;
// このサンプルではビットマップの全面を描画領域にしています
with Bitmap do
rc := RECT(0, 0,
// 縮尺はディスプレイに合わせています
Width * 1440 div GetDeviceCaps(Canvas.Handle, LOGPIXELSX),
Height * 1440 div GetDeviceCaps(Canvas.Handle, LOGPIXELSY)
);
rcPage := rc;
chrg.cpMin := TextStart;
chrg.cpMax := TextEnd;
end;
OldMap := SetMapMode(Range.hdc, MM_TEXT);
Result := SendMessage(RichEdit.Handle, EM_FORMATRANGE,
1, Longint(@Range));
SetMapMode(Range.hdc, OldMap);
end;
// 使い方はこんな感じです。
//procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.RichEdit1Change(Sender: TObject);
var
bmp: TBitmap;
TextStart, TextEnd: Integer;
begin
bmp := TBitmap.Create;
try
// Windows95 付属のビットマップでテストしました
bmp.LoadFromFile('c:\windows\花見.bmp');
// 文字背景を透過させる...ただの茶目っ気です ^^;
bmp.Canvas.Brush.Style := bsClear;
// テキストの最初から
TextStart := 0;
// テキストの最後まで
TextEnd := -1;
// ビットマップに描画する
DrawRidhEditToBitmap(bmp, RichEdit1, TextStart, TextEnd);
// ビットマップをフォームに描画する
Canvas.Draw(0, 0, bmp);
// ビットマップをファイルに保存する
// with SaveDialog1 do
// if Execute then bmp.SaveToFile(FileName);
finally
bmp.Free;
end;
end;
以上です。
1998/02/17、河邦 正(GCC02240@niftyserve.or.jp)
Original document by 河邦 正 氏 ID:(GCC02240)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|