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

//在矩形范围中显示文本
var
  g: TGPGraphics;
  fontFamily: TGPFontFamily;
  font: TGPFont;
  rectF: TGPRectF;
  p: TGPPen;
  sb: TGPSolidBrush;
  str: WideString;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  fontFamily:= TGPFontFamily.Create('宋体');
  font:= TGPFont.Create(fontFamily, 9, FontStyleRegular, UnitPoint);
  p := TGPPen.Create(aclRed);
  sb:= TGPSolidBrush.Create(MakeColor(255, 0, 0, 0));

  rectF:= MakeRect(10.0, 10.0, 116.0, 100.0); {包含文本的矩形范围}

  str := '万一万一万一万一万一万一万一万一万一万一万一万一万一万一万一';

  g.DrawRectangle(p, rectF);
  g.DrawString(str, -1, font, rectF, nil, sb);
  {参数4不能用TGPRect,只能是TGPRectF; 参数5是文字格式对象,后面举例}

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


//设置对齐方式
var
  g: TGPGraphics;
  str: String;
  fontFamily: TGPFontFamily;
  font: TGPFont;
  rectF: TGPRectF;
  strFormat: TGPStringFormat;
  sb: TGPSolidBrush;
  p: TGPPen;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  fontFamily:= TGPFontFamily.Create('Arial');
  font:= TGPFont.Create(fontFamily, 12, FontStyleBold, UnitPoint);
  rectF:= MakeRect(30.0, 10.0, 120.0, 140.0);
  sb:= TGPSolidBrush.Create(MakeColor(255, 0, 0, 255));

  strFormat:= TGPStringFormat.Create;
  strFormat.SetAlignment(StringAlignmentCenter);     {设置左右对齐方式}
  strFormat.SetLineAlignment(StringAlignmentCenter); {设置垂直对齐方式}

  str := 'wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy';
  g.DrawString(str, -1, font, rectF, strFormat, sb);

  p:= TGPPen.Create(MakeColor(255, 0, 0, 0));
  g.DrawRectangle(p, rectF);

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


//使用格式化标志创建文本格式化对象
var
  g: TGPGraphics;
  str: String;
  fontFamily: TGPFontFamily;
  font: TGPFont;
  rectF: TGPRectF;
  strFormat: TGPStringFormat;
  sb: TGPSolidBrush;
  p: TGPPen;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  fontFamily:= TGPFontFamily.Create('Arial');
  font:= TGPFont.Create(fontFamily, 12, FontStyleBold, UnitPoint);
  rectF:= MakeRect(30.0, 10.0, 120.0, 140.0);
  sb:= TGPSolidBrush.Create(MakeColor(255, 0, 0, 255));

  strFormat:= TGPStringFormat.Create(StringFormatFlagsDirectionRightToLeft);
  {使用格式化标志创建文本格式化对象}

  str := 'wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy wy';
  g.DrawString(str, -1, font, rectF, strFormat, sb);

  p:= TGPPen.Create(MakeColor(255, 0, 0, 0));
  g.DrawRectangle(p, rectF);

  fontFamily.Free;
  font.Free;
  strFormat.Free;
  sb.Free;
  p.Free;
  g.Free;
end;
文本对齐方式:

Delphi微软说明
StringAlignmentCenter Center 指定文本在布局矩形中居中对齐。
StringAlignmentFarFar指定文本远离布局矩形的原点位置对齐。在左到右布局中,远端位置是右。在右到左布局中,远端位置是左。
StringAlignmentNearNear指定文本靠近布局对齐。在左到右布局中,近端位置是左。在右到左布局中,近端位置是右。


文本格式化标志:

Delphi微软说明
StringFormatFlagsDirectionRightToLeftDirectionRightToLeft按从右向左的顺序显示文本。
StringFormatFlagsDirectionVerticalDirectionVertical文本垂直对齐。
StringFormatFlagsDisplayFormatControlDisplayFormatControl控制字符(如从左到右标记)随具有代表性的标志符号一起显示在输出中。
StringFormatFlagsFitBlackBoxFitBlackBox允许部分字符延伸该字符串的布局矩形。默认情况下,将重新定位字符以避免任何延伸。
StringFormatFlagsLineLimitLineLimit在格式化的矩形中只布置整行。默认情况下,这种布置要继续到文本的结尾为止,或者到由于剪辑而不再有可见的行为止,看哪一种情况先发生。注意,此默认设置允许不是行高整数倍的格式化矩形将最后一行部分地遮住。若要确保看到的都是整行,请指定此值,并仔细地提供格式化矩形,使其高度至少为一个行高。
StringFormatFlagsMeasureTrailingSpaces MeasureTrailingSpaces 包括每一行结尾处的尾随空格。在默认情况下,MeasureString 方法返回的边框都将排除每一行结尾处的空格。设置此标记以便在测定时将空格包括进去。
StringFormatFlagsNoClipNoClip允许显示标志符号的伸出部分和延伸到边框外的未换行文本。在默认情况下,延伸到边框外侧的所有文本和标志符号部分都被剪裁。
StringFormatFlagsNoFontFallbackNoFontFallback对于请求的字体中不支持的字符,禁用回退到可选字体。缺失的任何字符都用缺失标志符号的字体显示,通常是一个空的方块。
StringFormatFlagsNoWrapNoWrap在矩形内设置格式时,禁用文本换行功能。当传递的是点而不是矩形时,或者指定的矩形行长为零时,已隐含此标记。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值