首页 > 其他分享 >文本转换图片

文本转换图片

时间:2023-08-16 16:46:30浏览次数:47  
标签:Canvas 转换 Text end bit 文本 Page Memo1 图片

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.

标签:Canvas,转换,Text,end,bit,文本,Page,Memo1,图片
From: https://www.cnblogs.com/lucken2000/p/17635478.html

相关文章

  • 深入理解 Flutter 图片加载原理
    前言随着Flutter稳定版本逐步迭代更新,京东APP内部的Flutter业务也日益增多,Flutter开发为我们提供了高效的开发环境、优秀的跨平台适配、丰富的功能组件及动画、接近原生的交互体验,但随之也带来了一些OOM问题,通过线上监控信息和Observatory工具结合分析我们发现问题的原因是由于Fl......
  • 前端文件转换
    file文件的拷贝和改名//复制文本域中的file文件并重命名letmyFile=newFile([file],"新文件的名字"]);bolb格式转base64格式functionblobToDataURL(blob,callback){letreader=newFileReader();reader.onload=function(){callback(reader.result);}re......
  • AX网相关图片(原创)
              官网:AXA6.COM|Thefutureiscome.©Copyright2020–2023|AX网Axa6.Com|AllRightsReserved......
  • Grafana日志转换-Convert field type & Concatenate fields & Organize fields
    Grafana日志转换-Convertfieldtype&Concatenatefields&Organizefields转换函数根据自己的使用情况,记录使用到的转换函数,这次涉及到的转换函数如下Convertfieldtype功能:转换字段的类型Concatenatefields功能:将所有字段合并为一个数据集合。如果长度不相同,值将附加......
  • YUV图像格式转换: YUYV 转 NV12
    首先确认YUYV与NV12的采样格式,YUYV属于YUV4:2:2采样,而NV12属于YUV4:2:0采样。采样方式如下图所示:   实心圆表示Y分量,空心圆表示一对U和V的分量。并且YUV图像中每一个Y分量,即表示一个像素点。  可以很明显地看出YUV422采样中两个像素点共用一对U和V的分量,而YUV420......
  • JavaScript程序中的文本、注释和字面量
    JavaScript程序中的文本。JavaScript区分大小写。这意味着它的关键字、变量、函数名和其他标识符必须始终保持一致的大小写。例如,“while”关键字必须写成“while”,而不是“While”或“WHILE”。同样,“online”、“Online”、“OnLine”和“ONLINE”是四个完全不同的变量名。Jav......
  • JScript 操作文本文件 练习代码
     varTextStream=function(){this.handle=null;this.create=function(filename,overwrite){varfso=newActiveXObject("scripting.filesystemobject");this.handle=fso.CreateTextFile(filename,overwrite);}th......
  • xhEditor 复制word里面带图文的文章,图片可以直接显示
    ​ 1.编辑器修改(可选)1.1在 ueditor/config.json 中添加代码块    /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action名称 */    "wordFieldName":"upfile",/* 提交的视频表单名称 */    "wordPathFormat":"/p......
  • 计算机视觉智能中医(二):基于mediapipe的手掌图片穴位识别
    文章目录1简要介绍2技术详情3代码实现3.1导入相应的库3.2定义在图片中画点写字的函数3.3定义手部关键点监测模型并导入3.4导入绘图函数3.5将原本三维的坐标系转为2维方便平面坐标计算3.6计算手部穴位的函数4完整代码5实验结果展示1简要介绍说明:此方法可能有一定的缺......
  • Streamlit 讲解专栏(六):展示文本魔力
    文章目录1前言2st.markdown-引入丰富的Markdown文本3st.title-引入引人注目的大标题4st.header-引入简洁的小标题5st.subheader-添加次级标题6st.caption-添加解释性文字7st.code-显示代码块8st.text-显示文本9st.latex-显示LaTeX公式10st.divider-添......