为什么80%的码农都做不了架构师?>>>   

//声明:
CreateFontIndirect(const p1: TLogFont {字体结构}
): HFONT;            {返回新字体指针}//TLogFont 是 tagLOGFONTA 结构的重定义:
tagLOGFONTA = packed recordlfHeight: Longint;      {字体高度}lfWidth: Longint;       {字体平均宽度}lfEscapement: Longint;  {角度, 单位是 1/10 度}lfOrientation: Longint; {基线角度}lfWeight: Longint;      {粗体, 取值: 0-1000}lfItalic: Byte;         {斜体}lfUnderline: Byte;      {下划线}lfStrikeOut: Byte;      {删除线}lfCharSet: Byte;        {字符集}lfOutPrecision: Byte;   {输出精度}lfClipPrecision: Byte;  {剪裁精度}lfQuality: Byte;        {输出质量}lfPitchAndFamily: Byte; {间距及字族}lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar; {字样名称}
end;//例1:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
varFontInfo: TLogFont; {声明字体结构}FH1,FH2: HFONT;     {声明字体句柄}
conststr = '万一的 Delphi 博客';
begin{定义字体特征}FontInfo.lfHeight := 0;     {赋值 0, 系统自动给一个值}FontInfo.lfWidth := 0;      {赋值 0, 系统自动给一个值}FontInfo.lfEscapement := 0; {无角度}FontInfo.lfWeight := 500;   {中等加粗}FontInfo.lfItalic := 0;     {非斜体}FontInfo.lfUnderline := 0;  {无下划线}FontInfo.lfStrikeOut := 0;  {无删除线}FontInfo.lfFaceName := '宋体';FH1 := CreateFontIndirect(FontInfo);FH2 := SelectObject(Canvas.Handle, FH1);{用 CreateFontIndirect 建立逻辑字体; 用 SelectObject 选人设备; 并返回字体句柄}TextOut(Canvas.Handle, X, Y, str, Length(str));DeleteObject(FH1);DeleteObject(FH2);
end;//效果图:


//例2: 扁字
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
varFontInfo: TLogFont; FH1,FH2: HFONT;
conststr = '万一的 Delphi 博客';
beginFontInfo.lfHeight := 0;     FontInfo.lfWidth := 12;     {只修改了此处} FontInfo.lfEscapement := 0; FontInfo.lfWeight := 500;   FontInfo.lfItalic := 0;     FontInfo.lfUnderline := 0;  FontInfo.lfStrikeOut := 0;  FontInfo.lfFaceName := '宋体';FH1 := CreateFontIndirect(FontInfo);FH2 := SelectObject(Canvas.Handle, FH1);TextOut(Canvas.Handle, X, Y, str, Length(str));DeleteObject(FH1);DeleteObject(FH2);
end;//效果图:


//例3: 长字
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
varFontInfo: TLogFont; FH1,FH2: HFONT;
conststr = '万一的 Delphi 博客';
beginFontInfo.lfHeight := 32;    {修改了此处}  FontInfo.lfWidth := 12;     FontInfo.lfEscapement := 0; FontInfo.lfWeight := 500;   FontInfo.lfItalic := 0;     FontInfo.lfUnderline := 0;  FontInfo.lfStrikeOut := 0;  FontInfo.lfFaceName := '宋体';FH1 := CreateFontIndirect(FontInfo);FH2 := SelectObject(Canvas.Handle, FH1);TextOut(Canvas.Handle, X, Y, str, Length(str));DeleteObject(FH1);DeleteObject(FH2);
end;//效果图:


//例4: 旋转
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
varFontInfo: TLogFont; FH1,FH2: HFONT;
conststr = '万一的 Delphi 博客';
beginFontInfo.lfHeight := 0;      FontInfo.lfWidth := 0;     FontInfo.lfEscapement := 450; {修改了此处}FontInfo.lfWeight := 500;   FontInfo.lfItalic := 0;     FontInfo.lfUnderline := 0;  FontInfo.lfStrikeOut := 0;  FontInfo.lfFaceName := '宋体';FH1 := CreateFontIndirect(FontInfo);FH2 := SelectObject(Canvas.Handle, FH1);TextOut(Canvas.Handle, X, Y, str, Length(str));DeleteObject(FH1);DeleteObject(FH2);
end;//效果图:


//一个利用角度的示例:
procedure TForm1.FormPaint(Sender: TObject);
varFontInfo: TLogFont; FH1,FH2: HFONT; x,y,i: Integer;
conststr = '万一的 Delphi 博客';
beginFontInfo.lfHeight := 0; FontInfo.lfWidth := 0;     FontInfo.lfEscapement := 0; FontInfo.lfWeight := 1000;   FontInfo.lfItalic := 0;     FontInfo.lfUnderline := 0;  FontInfo.lfStrikeOut := 0;  FontInfo.lfFaceName := '宋体';x := ClientWidth div 2;y := ClientHeight div 2;SetBkMode(Canvas.Handle, TRANSPARENT);i := 0;while i<360 dobeginFontInfo.lfEscapement := i * 10;FH1 := CreateFontIndirect(FontInfo);FH2 := SelectObject(Canvas.Handle, FH1);TextOut(Canvas.Handle, X, Y, str, Length(str));Inc(i,10);end;DeleteObject(FH1);DeleteObject(FH2);
end;//效果图:


转载于:https://my.oschina.net/hermer/blog/320138

WinAPI: CreateFontIndirect - 根据字体结构建立逻辑字体相关推荐

  1. 17.3 逻辑字体

    摘录于<Windows程序(第5版,珍藏版).CHarles.Petzold 著>P778 现在我们已经理解了逻辑英寸和逻辑缇的概念,让我们开始讨论逻辑字体. 一个逻辑字体是一个 GDI ...

  2. Windows字体结构LOGFONT

    LOGFONT是Windows内部字体的逻辑结构,主要用于设置字体格式,其定义如下: typedef struct tagLOGFONTA{LONG lfHeight;LONG lfWidth;LON ...

  3. windows的字体结构 LOGFONT

    在Windows内部,字体是以一个名为LOGFONT的结构来表示   结构体原型: typedef struct tagLOGFONT { LONG lfHeight;  //以逻辑单位指定字体字符元 ...

  4. 关于TrueType字体结构的文章

    转载链接:  http://www.zhaozi.cn/e/DoPrint/?classid=94&id=45 TrueType字体通常包含在单个TrueType字体文件中,其文件后缀为. ...

  5. [转]TrueType字体结构

    TrueType字体通常包含在单个TrueType字体文件中,其文件后缀为.TTF. OpenType字体是以类似于TrueType字体的格式编码的POSTSCRIPT字体.OPENTYPE字体使用. ...

  6. 字体信息 TEXTMETRIC 字体结构 GLYPHMETRICS

    tmHeight指字符高度(不包括两行字符之间的间距),tmAscent表示字符基线以上部分的高度,tmDescent表示字符基线以下部分的高度. tmInternalLeading表示字符内预留的间 ...

  7. 网站设计分析:banner中的字体结构

    对于我们通常所看到的网站banner,它的本身形状决定了其固定的构成方式一般为矩形,横幅,左右结构和居中,它的文字特点是主题式,一般分为主标题和副标题,文字较多,设计的时候还需要考虑应用到网站各种尺寸 ...

  8. (整理)HTML字体标记:标题字体,字体大小,物理字体,逻辑字体,字体颜色,客户端字体,字符实体

                            HTML字体标记   HTML字体标记包括:标题字体,字体大小,物理字体,逻辑字体,字体颜色,客户端字体,字符实体等. 1.标题字体: <h#&g ...

  9. HTML中的物理字体与逻辑字体

    物理字体指定文本的"样式"(如粗.斜.下划线): 逻辑字体指定文本的"作用"(如强调.缩小.放大). 转载于:https://www.cnblogs.com/z ...

最新文章

  1. (C++)小明种苹果(续)
  2. R语言使用pwr包的pwr.chisq.test函数对卡方检验进行效用分析(power analysis)、在已知效应量(effect size)、显著性水平、效用值的情况下计算需要的样本量
  3. 测试tcp连接数工具_后端开发程序员不知道压力测试怎么能行
  4. mybatis3 中 @Provider 的使用方式
  5. 怎么从gitlab上下载别人的代码
  6. Leetcode算法题(C语言)13--反转字符串
  7. TEMU:动态分析组件
  8. Python基础----Matplotlib_新增
  9. 用 Python 检验数据正态分布的几种方法
  10. mips指令分类和寻址大全
  11. java B2B2C Springboot多租户电子商城系统-Spring Cloud Stream(消息驱动)
  12. MVCC常问面试题(面试重点)
  13. 如何通过W3school学习JS/如何使用W3school的JS参考手册
  14. T6 v6.2puls1 安装了最新补丁之后采购发票结算之后入库单价税合计有1分差额
  15. 无人机倾斜摄影技术应用(文末附作业指导书)
  16. VmWare中虚拟机桥接无线网卡使用静态ip
  17. 《指弹:HARD RAIN》
  18. 【其他】【RQNOJ】吉祥数
  19. 语法俱乐部3:动词时态
  20. 数字SOC设计之低功耗设计入门(二)——功耗的分析

热门文章

  1. 如何处理“已超出域所允许创建计算机账户的最大值”
  2. Java类和对象的初始化顺序
  3. pyspark 核心概念
  4. Python进程和线程保姆式教学,1个台机子多只手干活的秘籍
  5. java并行任务dispatch_Java模拟 双分派Double Dispatch
  6. python5_python5
  7. python计时函数_python计时函数
  8. linux 在硬盘中创建文件系统,linux mkfs命令创建Linux文件系统
  9. HDU1042(高精度模拟乘法)
  10. 点分治问题 ----------- HDU4812 D Tree [点分治 + 乘法逆元]