⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dgallery.pas

📁 KSDev.BlockEngine.v3.03.rar 界面控件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit dgallery;

{$I be_define.inc}

interface

uses Windows, Classes, Controls, Contnrs, Graphics, SysUtils, GdipObj,
  Gdipapi, GdipUtil, ddoc, dgalproc;

type

  Triangle = class(Block)
  private
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure DrawBlock(G: TGPGraphics); override;
  published
  end;

  RightTriangle = class(Block)
  private
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure DrawBlock(G: TGPGraphics); override;
  published
  end;

  Diamond = class(Block)
  private
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure DrawBlock(G: TGPGraphics); override;
  published
  end;

  TDrawingProc = procedure (Path: TGPGraphicsPath; Width, Height: single);

  ProceduredBlock = class(Block)
  private
    FDrawProc: TDrawingProc;
  protected
    property DrawProc: TDrawingProc read FDrawProc write FDrawProc;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure DrawBlock(G: TGPGraphics); override;
  published
  end;

{ Arrows }

  Arrow1 = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Arrow2 = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Arrow3 = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Arrow4 = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Arrow5 = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  CurvedArrow = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

{ Geometry }

  HalfCircle = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Pentagon = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Hexagon = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Heptagon = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Cross = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  LineStar = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ThreeStar = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  FourStar = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  FiveStar = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  SixStar = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  EightStar = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  BigStar = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  RoundStar = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

{ 3D }

  Pyramid = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Ladder = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Hex3D = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Mailbox = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Triangle3D = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Sector3D = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Cube = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Torus = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Cylinder = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

{ Advanced }

  Brush = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Pen = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Shears = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Phone = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Paper = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Recycled = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Mouse = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Printer = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Computer = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Keyboard = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  Hand = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

{ Charting }

  ChartDocument = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartData = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartDirectData = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartSequentialData = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartManualInput = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartManualOperation = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartOffPageRef = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartDisplay = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartStoredData = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartPaperTape = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartPreparation = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartCard = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

  ChartTerminator = class(ProceduredBlock)
  public
    constructor Create(AOwner: TComponent); override;
  end;

implementation {===============================================================}

{ Triangle ========================================================================}

constructor Triangle.Create;
var
  P: BlockPoint;
begin
  inherited;
  { Snap }
  P := BlockPoint(Points.Add);
  P.Kind := pkSnapPoint;
  P.X := 0;
  P.Y := 1.0;
  P := BlockPoint(Points.Add);
  P.Kind := pkSnapPoint;
  P.X := 0.5;
  P.Y := 0;
  P := BlockPoint(Points.Add);
  P.Kind := pkSnapPoint;
  P.X := 1;
  P.Y := 1.0;
  P := BlockPoint(Points.Add);
  P.Kind := pkBlockSnapPoint;
  P.X := 0.5;
  P.Y := 0.5;
end;

destructor Triangle.Destroy;
begin
  inherited;
end;

procedure Triangle.DrawBlock(G: TGPGraphics);
var
  P: TGPPen;
  B: TGPBrush;
  Path: TGPGraphicsPath;
begin
  P := Stroke.GetPen;
  B := Fill.GetBrush(PointXByName('lefttop'), PointYByName('lefttop'), PointXByName('rightbottom'), PointYByName('rightbottom'));

  Path := TGPGraphicsPath.Create;
  Path.StartFigure;
  Path.AddLine(PointByName('top').X, PointByName('top').Y, PointByName('rightbottom').X, PointByName('rightbottom').Y);
  Path.AddLine(PointByName('rightbottom').X, PointByName('rightbottom').Y, PointByName('leftbottom').X, PointByName('leftbottom').Y);
  Path.AddLine(PointByName('leftbottom').X, PointByName('leftbottom').Y, PointByName('top').X, PointByName('top').Y);
  Path.CloseFigure;

  G.FillPath(B, Path);
  G.DrawPath(P, Path);

  Path.Free;

  B.Free;
  P.Free;
end;

{ RightTriangle ========================================================================}

constructor RightTriangle.Create;
var
  P: BlockPoint;
begin
  inherited;
  { Snap }
  P := BlockPoint(Points.Add);
  P.Kind := pkSnapPoint;
  P.X := 0;
  P.Y := 0.0;
  P := BlockPoint(Points.Add);
  P.Kind := pkSnapPoint;
  P.X := 1;
  P.Y := 1;
  P := BlockPoint(Points.Add);
  P.Kind := pkSnapPoint;
  P.X := 0;
  P.Y := 1.0;
  P := BlockPoint(Points.Add);
  P.Kind := pkBlockSnapPoint;
  P.X := 0.5;
  P.Y := 0.5;
end;

destructor RightTriangle.Destroy;
begin
  inherited;
end;

procedure RightTriangle.DrawBlock(G: TGPGraphics);
var
  P: TGPPen;
  B: TGPBrush;
  Path: TGPGraphicsPath;
begin
  P := Stroke.GetPen;
  B := Fill.GetBrush(PointXByName('lefttop'), PointYByName('lefttop'), PointXByName('rightbottom'), PointYByName('rightbottom'));

  Path := TGPGraphicsPath.Create;
  Path.StartFigure;
  Path.AddLine(PointByName('lefttop').X, PointByName('lefttop').Y, PointByName('rightbottom').X, PointByName('rightbottom').Y);
  Path.AddLine(PointByName('rightbottom').X, PointByName('rightbottom').Y, PointByName('leftbottom').X, PointByName('leftbottom').Y);
  Path.AddLine(PointByName('leftbottom').X, PointByName('leftbottom').Y, PointByName('lefttop').X, PointByName('lefttop').Y);
  Path.CloseFigure;

  G.FillPath(B, Path);
  G.DrawPath(P, Path);

  Path.Free;

  B.Free;
  P.Free;
end;

{ Diamond ========================================================================}

constructor Diamond.Create;
var
  P: BlockPoint;
begin
  inherited;
  { Snap }
  P := BlockPoint(Points.Add);
  P.Kind := pkSnapPoint;
  P.X := 0.5;
  P.Y := 0.0;
  P := BlockPoint(Points.Add);
  P.Kind := pkSnapPoint;
  P.X := 1;
  P.Y := 0.5;
  P := BlockPoint(Points.Add);
  P.Kind := pkSnapPoint;
  P.X := 0.5;
  P.Y := 1;
  P := BlockPoint(Points.Add);
  P.Kind := pkSnapPoint;
  P.X := 0;
  P.Y := 0.5;
  P := BlockPoint(Points.Add);
  P.Kind := pkBlockSnapPoint;
  P.X := 0.5;
  P.Y := 0.5;
end;

destructor Diamond.Destroy;
begin
  inherited;
end;

procedure Diamond.DrawBlock(G: TGPGraphics);
var
  P: TGPPen;
  B: TGPBrush;
  Path: TGPGraphicsPath;
begin
  P := Stroke.GetPen;
  B := Fill.GetBrush(PointXByName('lefttop'), PointYByName('lefttop'), PointXByName('rightbottom'), PointYByName('rightbottom'));

  Path := TGPGraphicsPath.Create;
  Path.StartFigure;
  Path.AddLine(PointByName('top').X, PointByName('top').Y, PointByName('right').X, PointByName('right').Y);
  Path.AddLine(PointByName('right').X, PointByName('right').Y, PointByName('bottom').X, PointByName('bottom').Y);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -