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


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 测试:

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


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 测试:

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


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 测试:

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


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 测试:

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


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 测试:

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


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

你可能感兴趣的:(graphics)