再学 GDI+[55]: 路径 - Flatten

通过路径的 Flatten 方法可以把路径中的曲线拉直, 拉直到什么程度是由它的第二个参数(默认0.25)决定的; 它的第一个参数又是一个矩阵变换, 也就是说 Flatten 可以同时进行矩阵变换, 本例没有测试它, 其详情参见:
http://www.cnblogs.com/del/archive/2008/06/20/1226293.html

本例效果图:

再学 GDI+[55]: 路径 - Flatten

代码文件:

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ComCtrls;



type

  TForm1 = class(TForm)

    TrackBar1: TTrackBar;

    procedure FormPaint(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure TrackBar1Change(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



uses GDIPOBJ, GDIPAPI;



procedure TForm1.FormCreate(Sender: TObject);

begin

  TrackBar1.Height := 23;

  TrackBar1.ShowSelRange := False;

  TrackBar1.Min := -5000;

  TrackBar1.Max := 5000;

  TrackBar1.Position := 25;

  TrackBar1.PageSize := 5;

end;



procedure TForm1.FormPaint(Sender: TObject);

var

  g: TGPGraphics;

  p: TGPPen;

  path: TGPGraphicsPath;

  f: Single;

begin

  g := TGPGraphics.Create(Canvas.Handle);

  p := TGPPen.Create(aclBlue, 2);

  path := TGPGraphicsPath.Create;

  path.AddEllipse(20, 20, ClientWidth-40, ClientHeight- 80);



  f := TrackBar1.Position / 100;

  path.Flatten(nil, f);

  Text := Format('%f', [f]);



  g.DrawPath(p, path);



  path.Free;

  p.Free;

  g.Free;

end;



procedure TForm1.TrackBar1Change(Sender: TObject);

begin

  Repaint;

end;



end.


 
   
窗体文件:

object Form1: TForm1

  Left = 0

  Top = 0

  Caption = 'Form1'

  ClientHeight = 200

  ClientWidth = 264

  Color = clBtnFace

  Font.Charset = DEFAULT_CHARSET

  Font.Color = clWindowText

  Font.Height = -11

  Font.Name = 'Tahoma'

  Font.Style = []

  OldCreateOrder = False

  Position = poDesktopCenter

  OnCreate = FormCreate

  OnPaint = FormPaint

  PixelsPerInch = 96

  TextHeight = 13

  object TrackBar1: TTrackBar

    Left = 0

    Top = 176

    Width = 265

    Height = 45

    TabOrder = 0

    OnChange = TrackBar1Change

  end

end


 
   

你可能感兴趣的:(DI)