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

Delphi文本绘制技巧
本文介绍了使用Delphi进行文本绘制的各种技巧,包括不同文本样式、坐标单位的应用、文本呈现质量的调整等,对于Delphi开发者来说是很好的参考资料。
//输出文本
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微软说明
FontStyleBoldBold加粗文本。
FontStyleItalicItalic倾斜文本。
FontStyleRegularRegular普通文本。
FontStyleStrikeoutStrikeout中间有直线通过的文本。
FontStyleUnderline Underline 带下划线的文本。


坐标单位类型表:

Delphi微软说明
UnitDisplayDisplay指定显示设备的度量单位。通常,视频显示使用的单位是像素;打印机使用的单位是 1/100 英寸。
UnitDocument Document 将文档单位(1/300 英寸)指定为度量单位。
UnitInchInch将英寸指定为度量单位。
UnitMillimeterMillimeter将毫米指定为度量单位。
UnitPixelPixel将设备像素指定为度量单位。
UnitPointPoint将打印机点(1/72 英寸)指定为度量单位。
UnitWorldWorld将世界坐标系单位指定为度量单位。


文本呈现质量模式:

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


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值