文档章节

GdiPlus[44]: IGPGraphics (三) 关于文本绘制续 - IGPStringFormat

涂孟超
 涂孟超
发布于 2014/09/26 15:30
字数 626
阅读 8
收藏 0

IGPStringFormat 的方法和属性:

//方法:
IGPStringFormat.GetTabStops();                  { 获取制表位 }
IGPStringFormat.SetTabStops();                  { 设置制表位 }
IGPStringFormat.SetDigitSubstitution();         { 指定用本地数字替换西方数字时使用的语言和方法 }
IGPStringFormat.SetMeasurableCharacterRanges(); { 指定 IGPCharacterRanges 结构的数组 }

//属性:
IGPStringFormat.FormatFlags;                    { 获取或设置 TGPStringFormatFlags 集合 }
IGPStringFormat.Alignment;                      { 获取或设置水平对齐 }
IGPStringFormat.LineAlignment;                  { 获取或设置垂直对齐 }
IGPStringFormat.HotkeyPrefix;                   { 获取或设置 TGPHotkeyPrefix 枚举 }
IGPStringFormat.DigitSubstitutionLanguage;      { 获取或设置用本地数字替换西方数字时使用的语言 }
IGPStringFormat.DigitSubstitutionMethod;        { 获取或设置要用于数字替换的方法 }
IGPStringFormat.Trimming;                       { 获取或设置 TGPStringTrimming 枚举 }
IGPStringFormat.MeasurableCharacterRangeCount   { 指定的 IGPCharacterRanges 结构中的字符总数 }

//类函数:
TGPStringFormat.GenericDefault;      { 默认的 TGPStringFormat 对象 }
TGPStringFormat.GenericTypographic;  { 一般的版式 TGPStringFormat 对象 }

 
 
 
 
 

 

 

  

IGPStringFormat.Alignment 测试:



uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
const
  str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var
  Graphics: IGPGraphics;
  Brush: IGPSolidBrush;
  Pen: IGPPen;
  Font: IGPFont;
  StringFormat: IGPStringFormat;
  Rect: TGPRectF;
begin
  Graphics := TGPGraphics.Create(Handle);
  Brush := TGPSolidBrush.Create(TGPColor.Red);
  Pen := TGPPen.Create(TGPColor.Black);
  Font := TGPFont.Create('Arial', 16, [FontStyleBold]);
  StringFormat := TGPStringFormat.Create;

  Rect.Initialize(10, 10, 180, 60);
  Graphics.DrawString(str, Font, Rect, nil, Brush);
  Graphics.DrawRectangle(Pen, Rect);

  Rect.Y := Rect.Y + 60 + 20;
  StringFormat.Alignment := StringAlignmentCenter;
  Graphics.DrawString(str, Font, Rect, StringFormat, Brush);
  Graphics.DrawRectangle(Pen, Rect);

  Rect.Y := Rect.Y + 60 + 20;
  StringFormat.Alignment := StringAlignmentFar;
  Graphics.DrawString(str, Font, Rect, StringFormat, Brush);
  Graphics.DrawRectangle(Pen, Rect);
end;

 
 
 
 
 

 

 

  

IGPStringFormat.LineAlignment 测试:



uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
const
  str = 'ABCDEFG';
var
  Graphics: IGPGraphics;
  Brush: IGPSolidBrush;
  Pen: IGPPen;
  Font: IGPFont;
  StringFormat: IGPStringFormat;
  Rect: TGPRectF;
begin
  Graphics := TGPGraphics.Create(Handle);
  Brush := TGPSolidBrush.Create(TGPColor.Red);
  Pen := TGPPen.Create(TGPColor.Black);
  Font := TGPFont.Create('Arial', 16, [FontStyleBold]);
  StringFormat := TGPStringFormat.Create;

  Rect.Initialize(10, 10, 180, 60);
  Graphics.DrawString(str, Font, Rect, nil, Brush);
  Graphics.DrawRectangle(Pen, Rect);

  Rect.Y := Rect.Y + 60 + 20;
  StringFormat.LineAlignment := StringAlignmentCenter;
  Graphics.DrawString(str, Font, Rect, StringFormat, Brush);
  Graphics.DrawRectangle(Pen, Rect);

  Rect.Y := Rect.Y + 60 + 20;
  StringFormat.LineAlignment := StringAlignmentFar;
  Graphics.DrawString(str, Font, Rect, StringFormat, Brush);
  Graphics.DrawRectangle(Pen, Rect);
end;

 
 
 
 
 

 

 

  

IGPStringFormat.SetTabStops 测试:



uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
const
  Tabs: array [0..2] of Single = (150, 100, 100);
  Str = 'Name'#9'Test 1'#9'Test 2'#9'Test 3'#13#10 +
        'Joe'#9'95'#9'88'#9'91'#13#10 +
        'Mary'#9'98'#9'84'#9'90'#13#10 +
        'Sam'#9'42'#9'76'#9'98'#13#10 +
        'Jane'#9'65'#9'73'#9'92';
var
  Graphics: IGPGraphics;
  Brush: IGPSolidBrush;
  Pen: IGPPen;
  Font: IGPFont;
  StringFormat: IGPStringFormat;
  Rect: TGPRectF;
begin
  Graphics := TGPGraphics.Create(Handle);
  Brush := TGPSolidBrush.Create($FF000000);
  Pen := TGPPen.Create($FFFF0000);
  Font := TGPFont.Create('Courier New', 12);

  StringFormat := TGPStringFormat.Create;
  StringFormat.SetTabStops(0, [150, 100, 100]);
//  StringFormat.SetTabStops(50, [100, 100, 100]); //同上

  Rect.Initialize(10, 10, 420, 100);
  Graphics.DrawString(str, Font, Rect, StringFormat, Brush);
  Graphics.DrawRectangle(Pen, Rect);
end;

 
 
 
 
 

 

 

  

IGPStringFormat.HotkeyPrefix 测试:



uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
var
  Graphics: IGPGraphics;
  Font: IGPFont;
  Pt: TGPPointF;
  Brush: IGPSolidBrush;
  StringFormat: IGPStringFormat;
begin
  Graphics := TGPGraphics.Create(Handle);
  Font := TGPFont.Create(Canvas.Font.Name, 12);
  Pt.Initialize(10, 10);
  Brush := TGPSolidBrush.Create($FF000000);

  StringFormat := TGPStringFormat.Create;
  StringFormat.HotkeyPrefix := HotkeyPrefixShow;

  Graphics.DrawString('&Button', Font, Pt, StringFormat, Brush);

  Pt.Y := Pt.Y * 2 + Font.GetHeight(Graphics);
  Graphics.DrawString('Butt&on', Font, Pt, StringFormat, Brush);
end;

 
 
 
 
 

 

 

  

IGPStringFormat.Trimming 测试:



uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
var
  Graphics: IGPGraphics;
  Font: IGPFont;
  Rect: TGPRectF;
  Brush: IGPSolidBrush;
  StringFormat: IGPStringFormat;
  str: string;
  i: Integer;
begin
  Graphics := TGPGraphics.Create(Handle);
  Graphics.Clear($FFFFFFFF);
  Brush := TGPSolidBrush.Create($FF000000);
  Font := TGPFont.Create(Canvas.Font.Name, 10);

  Rect.Initialize(20, 20, ClientWidth - 40, Font.GetHeight(Graphics));

  StringFormat := TGPStringFormat.Create;
  str := Application.ExeName;
  for i := 0 to 5 do
  begin
    StringFormat.Trimming := TGPStringTrimming(i);
    Graphics.DrawString(str, Font, Rect, StringFormat, Brush);
    Graphics.TranslateTransform(0, Rect.Y + Rect.Height);
  end;
end;

 
 
 
 
 

 

 

  

另, 关于 TGPStringFormatFlags (对应 FormatFlags 属性或用于建立参数):
http://msdn.microsoft.com/zh-cn/library/system.drawing.stringformatflags(VS.80).aspx

本文转载自:http://www.cnblogs.com/del/archive/2009/12/22/1629987.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
MFC边框重绘

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 pragma once incl......

江河海流
2016/01/30
666
0
用C++实现半透明按钮控件(PNG,GDI+)

使用MFC实现上面的按钮半透明效果能看到父窗口中的内容,上面是效果图(一个是带背景图片的、另一个是不带的)。 控件继承自CWnd类(彩色的部分是窗口的背景图片、按钮是PNG图片,第二个图标是鼠...

shzwork
09/17
4
0
GDI+里面的问题。。。。。。。。。。

error C2248: “Gdiplus::Bitmap::Bitmap”: 无法访问 private 成员(在“Gdiplus::Bitmap”类中声明) 1> c:\program files\microsoft sdks\windows\v7.0a\include\gdiplusheaders.h(630) : ......

xxdd
2013/10/24
81
0
vs 2005 添加GDI配置

在VS2005当中由于自带了GDI+的开发包,所以不需要在安装GDI开发包,这些头文件的位置由VS中的$(WindowsSdkDir)/include自动包含进来了 下午自己添加了好几次,总是出现有报错,,在 stdafx.h...

种地瓜
2015/12/08
135
0
第155天:canvas(二)

一、添加样式和颜色 在前面的绘制矩形章节中,只用到了默认的线条和颜色。 如果想要给图形上色,有两个重要的属性可以做到。 设置图形的填充颜色 设置图形轮廓的颜色   备注: 1 function...

半指温柔乐
2018/01/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
37分钟前
4
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
39分钟前
6
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
今天
7
0
MySQL 表崩溃修复

MySQL日志报错 2019-10-19 13:41:51 19916 [ERROR] /usr/local/mysql/bin/mysqld: Table './initread_hss/user_info' is marked as crashed and should be repaired2019-10-19 13:41:51 1......

雁南飞丶
今天
6
0
Error和Exception

1.Error类和Exception类都是继承Throwable类 2.Error(错误)是系统中的错误,程序员是不能改变的和处理的,是在程序编译时出现的错误,只能通过修改程序才能修正。一般是指与虚拟机相关的问...

大瑞清_liurq
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部