文档章节

GDI+ 学习记录(22): 输出文本

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 774
阅读 4
收藏 0
//输出文本
var
  g: TGPGraphics;
  sb: TGPSolidBrush;
  fontFamily: TGPFontFamily;
  font: TGPFont;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  sb := TGPSolidBrush.Create(MakeColor(0,0,255));
  fontFamily := TGPFontFamily.Create('宋体');
  font := TGPFont.Create(fontFamily, 48, FontStyleRegular, UnitPixel);
  {参数 3 参考: 文本样式类型表; 参数 4 参考: 坐标单位类型表}

  g.DrawString('Hello World!', -1, font, MakePoint(10.0,10.0), sb);
  {参数 2 是输出文本的长度, -1 表示全部输出;
   参数 4 中的坐标不能用整数, 因为函数指定类型是: TGPRectF}

  sb.Free;
  fontFamily.Free;
  font.Free;
  g.Free;
end;

 
 
 
 
 

 

 

  
//简单输出文本 var g: TGPGraphics; sb: TGPSolidBrush; font: TGPFont; begin g := TGPGraphics.Create(Canvas.Handle); sb := TGPSolidBrush.Create(MakeColor(255,0,0)); font := TGPFont.Create('宋体',32.0); g.DrawString('再见, 2007!', -1, font, MakePoint(10.0,10.0), sb); sb.Free; font.Free; g.Free; end;
//使用窗体字体属性输出文本 var g: TGPGraphics; sb: TGPSolidBrush; font: TGPFont; begin g := TGPGraphics.Create(Canvas.Handle); sb := TGPSolidBrush.Create(MakeColor(255,0,0)); font := TGPFont.Create(Self.Canvas.Handle); //根据窗体的字体属性建立 g.DrawString('再见, 2007!', -1, font, MakePoint(10.0,10.0), sb); sb.Free; font.Free; g.Free; end;
//文本呈现质量 var g : TGPGraphics; FontFamily: TGPFontFamily; Font: TGPFont; sb: TGPSolidBrush; begin g := TGPGraphics.Create(Canvas.Handle); FontFamily := TGPFontFamily.Create('Times New Roman'); Font := TGPFont.Create(FontFamily, 32, FontStyleRegular, UnitPixel); sb := TGPSolidBrush.Create(MakeColor(255, 0, 0, 255)); g.SetTextRenderingHint(TextRenderingHintSingleBitPerPixel); g.DrawString('SingleBitPerPixel', -1, font, MakePoint(10.0, 10.0), sb); g.SetTextRenderingHint(TextRenderingHintAntiAlias); g.DrawString('AntiAlias', -1, font, MakePoint(10.0, 60.0), sb); g.Free; FontFamily.Free; Font.Free; sb.Free; end;
文本样式类型表:

Delphi 微软 说明
FontStyleBold Bold 加粗文本。
FontStyleItalic Italic 倾斜文本。
FontStyleRegular Regular 普通文本。
FontStyleStrikeout Strikeout 中间有直线通过的文本。
FontStyleUnderline  Underline  带下划线的文本。


坐标单位类型表:

Delphi 微软 说明
UnitDisplay Display 指定显示设备的度量单位。通常,视频显示使用的单位是像素;打印机使用的单位是 1/100 英寸。
UnitDocument  Document  将文档单位(1/300 英寸)指定为度量单位。
UnitInch Inch 将英寸指定为度量单位。
UnitMillimeter Millimeter 将毫米指定为度量单位。
UnitPixel Pixel 将设备像素指定为度量单位。
UnitPoint Point 将打印机点(1/72 英寸)指定为度量单位。
UnitWorld World 将世界坐标系单位指定为度量单位。


文本呈现质量模式:

Delphi 微软 说明
TextRenderingHintAntiAlias AntiAlias 在无提示的情况下使用每个字符的消除锯齿效果标志符号位图来绘制字符。由于采用了 AntiAlias,质量会得到改善。由于关闭了提示,主干宽度差可能会比较明显。
TextRenderingHintAntiAliasGridFit AntiAliasGridFit 在有提示的情况下使用每个字符的消除锯齿效果标志符号位图来绘制字符。由于采用了 AntiAlias,质量会得到大大改善,但同时会增加性能成本。
TextRenderingHintClearTypeGridFit ClearTypeGridFit 在有提示的情况下使用每个字符的标志符号 ClearType 位图来绘制字符。这是质量最高的设置。用于利用 ClearType 字体功能。
TextRenderingHintSingleBitPerPixel SingleBitPerPixel 使用每个字符的标志符号位图来绘制字符。不使用提示。
TextRenderingHintSingleBitPerPixelGridFit  SingleBitPerPixelGridFit  使用每个字符的标志符号位图来绘制字符。提示用于改善字符在主干和弯曲部分的外观。
TextRenderingHintSystemDefault SystemDefault 在有系统默认呈现提示的情况下使用每个字符的标志符号位图来绘制字符。将采用用户为系统选择的任何字体修匀设置来绘制文本。


本文转载自:http://www.cnblogs.com/del/archive/2007/12/27/1017439.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
C# WinForm开发系列 - GDI+

UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序。UI编程体现在两个方...

长征2号
2017/11/14
0
0
深度解读 - Windows 7核心图形架构细致分析(转贴)

原帖地址:http://technet.microsoft.com/zh-cn/library/ee921514.aspx 如现在大家所想的那样, Windows7 其实是 Windows Vista 的改进版。 Windows 7 在 Windows Vista 的基础上进行了大量的...

迈克老狼1
2012/12/23
0
0
GDI+图像处理学习笔记——改变图像的透明度

GDI+是WindowsXp和windows Server 2003中的一个子系统,主要用于处理系统的绘制消息。GDI+是GDI的扩展,其继承了GDI的有点并在其基础上进行了改进,包括增加了一些GDI无法绘制的图形函数,同...

晨曦之光
2012/05/23
491
0
ASP.NET 如何做出简单的验证码

如果说要做验证码,那不得不提的就是GDI+绘图了。我们都知道验证码是以图片形式展示的,而且是动态生成的,这样就需要我们去画出它。 科普一下,什么是GDI+? GDI+是图形设备接口(GDI)的高...

我不会抽烟
2014/07/29
0
0
实战开发:新手小白如何用C++制作经典网游DNF

十年前,那时候的网吧还不叫网咖,那时候没有王者荣耀也没有英雄联盟,那时候梦幻西游刚推出珍宝阁系统,那时候巫妖王的灵魂还封闭在冰封王座。 寻仙、穿越火线、征途、天龙八部……同时在线...

stone15165
05/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux命令备忘录: jobs 显示Linux中的任务列表及任务状态命令

jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的...

开元中国2015
47分钟前
1
0
springboot Whitelabel Error Page(Not Found)解决方案

当出现上图图的错误时注意 报错信息 There was an unexpected error (type=Not Found, status=404). Not Found代表未访问到资源 解决方案:比较访问路径和代码的路径有没有写错 正确的访问路...

斩神魂
47分钟前
2
0
记一次hbase master停止服务的原因以及恢复

在Hdfs空间不足的情况下,拒绝写入,hbase会down掉。如果hdfs空间没有清理的情况下,重新启动hbase,会报splitlog失败,原因是wal日志重写过程中会写hdfs,写不进去导致的。重启不成功。 解决...

PageYi
51分钟前
1
0
如何从平面设计转行到UI设计?

时代的变迁,科技的进步,工具的发展,薪资的差距,促使许多人转行的原因,但平面与界面两者之间有着哪些的差异呢?如果,想要转行又该具备哪些条件呢? 平面、界面设计之间的差异性 平面设计...

mo311
54分钟前
4
0
线程池整理

一般在生产环境中,我们都不会直接new一个Thread,然后再去start(),因为这么做会不断频繁的创建线程,销毁线程,过大的线程会耗尽CPU和内存资源,大量的垃圾回收,也会给GC带来压力,延长GC停顿时间...

算法之名
55分钟前
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部