📄 dgallery.pas
字号:
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 + -