⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formrichesavetobmpunit.pas

📁 duiwenjiandechuli fangbianguanli.
💻 PAS
字号:
unit FormRichESaveToBmpUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, RichEdit, Spin;

type
  TFormRichESaveToBmp = class(TForm)
    ScrollBox1: TScrollBox;
    SaveDialog1: TSaveDialog;
    Panel1: TPanel;
    Panel2: TPanel;
    Button2: TButton;
    Button1: TButton;
    SpinEdit1: TSpinEdit;
    Label1: TLabel;
    SpinEdit2: TSpinEdit;
    Label2: TLabel;
    Button3: TButton;
    Panel3: TPanel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button3Click(Sender: TObject);
  private
    Image1: TImage;
  public
    procedure createImage;
    procedure DrawRichEditImage;
  end;

var
  FormRichESaveToBmp: TFormRichESaveToBmp;

implementation

uses FormMainUnit;

{$R *.dfm}

procedure TFormRichESaveToBmp.createImage;
begin
  Image1 := TImage.Create(nil);
  Image1.Parent := ScrollBox1;
  Image1.Width := SpinEdit2.Value;
  Image1.Height := spinEdit1.Value;
  image1.Visible := true;
end;

procedure TFormRichESaveToBmp.DrawRichEditImage;
var
  Range             : TFormatRange;
  LastChar, MaxLen, LogX, LogY: Integer;
begin
  createImage;
  FillChar(Range, SizeOf(TFormatRange), 0);
  with Image1, Range do
  begin
    LogX := GetDeviceCaps(Canvas.Handle, LOGPIXELSX);
    LogY := GetDeviceCaps(Canvas.Handle, LOGPIXELSY);
    hdc := Canvas.Handle;
    hdcTarget := hdc;
    rc.right := Image1.ClientWidth * 1440 div LogX;
    rc.bottom := Image1.ClientHeight * 1440 div LogY;
    rcPage := rc;
    LastChar := 0;
    MaxLen := GetTextLen;
    chrg.cpMax := -1;
    repeat
      chrg.cpMin := LastChar;
      LastChar := SendMessage(FormMainUnit.FormMain.richEdit.Handle,
        EM_FORMATRANGE, 1,
        Longint(@Range));
    until (LastChar >= MaxLen) or (LastChar = -1);
  end;
  SendMessage(FormMainUnit.FormMain.richEdit.Handle, EM_FORMATRANGE, 0, 0);
  Image1.Refresh;
end;

procedure TFormRichESaveToBmp.Button1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
    Image1.Picture.SaveToFile(ChangeFileExt(SaveDialog1.fileName, '.bmp'));
end;

procedure TFormRichESaveToBmp.FormCreate(Sender: TObject);
begin
  if abs(formMain.richEdit.Lines.Count * (abs(formMain.RichEdit.Font.Height) +
    5)) > 400 then
    Spinedit1.Value := abs(formMain.richEdit.Lines.Count *
      (abs(formMain.RichEdit.Font.Height) + 5))
  else
    spinedit1.value := 400;
  spinedit2.Value := 640;
  DrawRichEditImage;
end;

procedure TFormRichESaveToBmp.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  image1.Free;
end;

procedure TFormRichESaveToBmp.Button3Click(Sender: TObject);
begin
  image1.Free;
  DrawRichEditImage;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -