• 把指定文本输出到图片 回复 "徐一凡" 的问题


    问题来源: http://www.cnblogs.com/del/archive/2008/08/10/1071357.html#1282779

    本例效果图:



    代码文件:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;
    
    type
      TForm1 = class(TForm)
        Memo1: TMemo;               {用于输入要保存的文本}
        ComboBox1: TComboBox;       {字体}
        LabeledEdit1: TLabeledEdit; {字号}
        LabeledEdit2: TLabeledEdit; {页面边距}
        LabeledEdit3: TLabeledEdit; {行距}
        Button1: TButton;
        Label1: TLabel;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    {初始化数据}
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ComboBox1.Items := Screen.Fonts;
      ComboBox1.Text := '宋体';
      LabeledEdit1.Text := '12';
      LabeledEdit2.Text := '10';
      LabeledEdit3.Text := '4';
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    const
      FilePath = 'c:\temp\Word.bmp'; {要保存的图片路径}
    var
      str: string;
      bit: TBitmap;
      Page_edge: Integer;     {页面边距变量}
      Word_h,Line_h: Integer; {字体高度和行间距}
      w,x,y: Integer;         {文本宽度与输出位置}
      i: Integer;
    begin
      str := Memo1.Text;
    
      bit := TBitmap.Create;
      bit.Canvas.Font.Name := ComboBox1.Text;
      bit.Canvas.Font.Size := StrToIntDef(LabeledEdit1.Text, 9);
    
      Page_edge := StrToIntDef(LabeledEdit2.Text, 0);
      Word_h := bit.Canvas.TextHeight('a');
      Line_h := StrToIntDef(LabeledEdit3.Text, 0);
    
      {设置页面高度}
      bit.Height := (Word_h + Line_h) * Memo1.Lines.Count - Line_h + Page_edge * 2;
      w := 0;
      x := Page_edge;
      y := Page_edge;
      
      for i := 0 to Memo1.Lines.Count - 1 do
      begin
        {设置页面宽度}
        if bit.Canvas.TextWidth(Memo1.Lines[i]) > w then
        begin
          w := bit.Canvas.TextWidth(Memo1.Lines[i]);
          bit.Width := w + Page_edge * 2;
        end;
        {画文本}
        bit.Canvas.TextOut(x, y, Memo1.Lines[i]);
        {下一行}
        Inc(y, Word_h + Line_h);
      end;
    
      {保存为图片}
      bit.SaveToFile(FilePath);
    
      bit.Free;
    end;
    
    end.
    
    窗体文件:
    object Form1: TForm1
      Left = 0
      Top = 0
      ActiveControl = Memo1
      Caption = #25226#25991#26412#20445#23384#20026#22270#29255
      ClientHeight = 274
      ClientWidth = 370
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      PixelsPerInch = 96
      TextHeight = 13
      object Label1: TLabel
        Left = 242
        Top = 7
        Width = 24
        Height = 13
        Caption = #23383#20307
      end
      object Memo1: TMemo
        Left = 0
        Top = 0
        Width = 234
        Height = 274
        Align = alLeft
        Lines.Strings = (
          'Memo1')
        ScrollBars = ssBoth
        TabOrder = 0
        ExplicitHeight = 249
      end
      object LabeledEdit1: TLabeledEdit
        Left = 240
        Top = 76
        Width = 121
        Height = 21
        EditLabel.Width = 24
        EditLabel.Height = 13
        EditLabel.Caption = #23383#21495
        TabOrder = 1
      end
      object Button1: TButton
        Left = 242
        Top = 227
        Width = 120
        Height = 25
        Caption = #25226#25991#26412#20445#23384#20026#22270#29255
        TabOrder = 2
        OnClick = Button1Click
      end
      object ComboBox1: TComboBox
        Left = 240
        Top = 25
        Width = 120
        Height = 21
        ItemHeight = 13
        TabOrder = 3
        Text = 'ComboBox1'
      end
      object LabeledEdit2: TLabeledEdit
        Left = 240
        Top = 120
        Width = 121
        Height = 21
        EditLabel.Width = 24
        EditLabel.Height = 13
        EditLabel.Caption = #36793#36317
        TabOrder = 4
      end
      object LabeledEdit3: TLabeledEdit
        Left = 240
        Top = 168
        Width = 121
        Height = 21
        EditLabel.Width = 24
        EditLabel.Height = 13
        EditLabel.Caption = #34892#36317
        TabOrder = 5
      end
    end
    
  • 相关阅读:
    大学随笔
    TMS320C54X系列DSP上FFT运算的实现(转)
    python第一天学习笔记以及心得
    Struts2学习笔记
    C#实现eval 进行四则运算(有码)
    sql 将字符串转换为表
    XML
    图形用户界面
    java io
    java集合
  • 原文地址:https://www.cnblogs.com/del/p/1265171.html
Copyright © 2020-2023  润新知