お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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