📄 gmcanvas.pas
字号:
{$IFDEF D4+}
procedure TGmCanvas.TextBox(x, y, x2, y2: Extended; AText: string; Alignment: TAlignment; VertAlignment: TGmVertAlignment;
Measurement: TGmMeasurement);
begin
TextBoxExt(x, y, x2, y2, FTextBoxPadding.AsGmValue[Measurement], AText,
Alignment, VertAlignment, Measurement);
end;
{$ENDIF}
procedure TGmCanvas.Arc(x, y, x2, y2, x3, y3, x4, y4: Extended; Measurement: TGmMeasurement);
var
AObject: TGmArcShape;
ACoords: TGmComplexCoords;
begin
AObject := TGmArcShape.Create(FResourceTable);
ACoords := GmComplexCoords(x, y, x2, y2, x3, y3, x4, y4);
AObject.Coords[Measurement] := ACoords;
AObject.Brush := FResourceTable.BrushList.AddBrush(AsGmBrush);
AObject.Pen := FResourceTable.PenList.AddPen(AsGmPen);
FLastObject := AddObjectToPage(AObject);
end;
procedure TGmCanvas.Chord(x, y, x2, y2, x3, y3, x4, y4: Extended; Measurement: TGmMeasurement);
var
AObject: TGmChordShape;
ACoords: TGmComplexCoords;
begin
AObject := TGmChordShape.Create(FResourceTable);
ACoords := GmComplexCoords(x, y, x2, y2, x3, y3, x4, y4);
AObject.Coords[Measurement] := ACoords;
AObject.Brush := FResourceTable.BrushList.AddBrush(AsGmBrush);
AObject.Pen := FResourceTable.PenList.AddPen(AsGmPen);
FLastObject := AddObjectToPage(AObject);
end;
procedure TGmCanvas.Pie(x, y, x2, y2, x3, y3, x4, y4: Extended; Measurement: TGmMeasurement);
var
AObject: TGmPieShape;
ACoords: TGmComplexCoords;
begin
AObject := TGmPieShape.Create(FResourceTable);
ACoords := GmComplexCoords(x, y, x2, y2, x3, y3, x4, y4);
AObject.Coords[Measurement] := ACoords;
AObject.Brush := FResourceTable.BrushList.AddBrush(AsGmBrush);
AObject.Pen := FResourceTable.PenList.AddPen(AsGmPen);
FLastObject := AddObjectToPage(AObject);
end;
{$IFDEF D4+}
procedure TGmCanvas.Arc(x, y, x2, y2, x3, y3, x4, y4: Extended);
begin
Arc(x, y, x2, y2, x3, y3, x4, y4, FDefaultMeasurement);
end;
procedure TGmCanvas.Chord(x, y, x2, y2, x3, y3, x4, y4: Extended);
begin
Chord(x, y, x2, y2, x3, y3, x4, y4, FDefaultMeasurement);
end;
procedure TGmCanvas.Pie(x, y, x2, y2, x3, y3, x4, y4: Extended);
begin
Pie(x, y, x2, y2, x3, y3, x4, y4, FDefaultMeasurement);
end;
{$ENDIF}
procedure TGmCanvas.Draw(x, y: Extended; AGraphic: TGraphic; Scale: Extended; Measurement: TGmMeasurement);
var
ARect: TGmRect;
GraphicSize: TGmSize;
begin
// Create an Graphic object and add it to the page objects list...
GraphicSize.Height := GraphicExtent(AGraphic).Height.AsGmValue[Measurement];
GraphicSize.Width := GraphicExtent(AGraphic).Width.AsGmValue[Measurement];
ARect.Left := x;
ARect.Top := y;
ARect.Right := x + (GraphicSize.Width * Scale);
ARect.Bottom := y + (GraphicSize.Height * Scale);
StretchDraw(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, AGraphic, Measurement);
end;
procedure TGmCanvas.StretchDraw(x, y, x2, y2: Extended; AGraphic: TGraphic; Measurement: TGmMeasurement);
var
AObject: TGmGraphicObject;
begin
AObject := TGmGraphicObject.Create(FResourceTable);
AObject.Graphic := AGraphic;
AObject.CopyMode := FCopyMode;
AObject.Coords[gmInches] := ConvertGmRect(GmRect(X, Y, X2, Y2), Measurement, gmInches);
FLastObject := AddObjectToPage(AObject);
end;
{$IFDEF D4+}
procedure TGmCanvas.Draw(x, y: Extended; AGraphic: TGraphic; const Scale: Extended = 1);
begin
Draw(x, y, AGraphic, Scale, FDefaultMeasurement);
end;
procedure TGmCanvas.StretchDraw(x, y, x2, y2: Extended; AGraphic: TGraphic);
begin
StretchDraw(x, y, x2, y2, AGraphic, FDefaultMeasurement);
end;
{$ENDIF}
procedure TGmCanvas.Polygon(Points: array of TGmPoint; Measurement: TGmMeasurement);
var
AObject: TGmPolygonObject;
APolyPoints: TGmPolyPoints;
begin
ArrayToPolyPoints(Points, APolyPoints);
AObject := TGmPolygonObject.Create(FResourceTable);
AObject.Points[Measurement] := APolyPoints;
AObject.Brush := FResourceTable.BrushList.AddBrush(AsGmBrush);
AObject.Pen := FResourceTable.PenList.AddPen(AsGmPen);
FLastObject := AddObjectToPage(AObject);
end;
procedure TGmCanvas.Polyline(Points: array of TGmPoint; Measurement: TGmMeasurement);
var
AObject: TGmPolylineObject;
APolyPoints: TGmPolyPoints;
begin
ArrayToPolyPoints(Points, APolyPoints);
AObject := TGmPolylineObject.Create(FResourceTable);
AObject.Points[Measurement] := APolyPoints;
AObject.Pen := FResourceTable.PenList.AddPen(AsGmPen);
FLastObject := AddObjectToPage(AObject);
end;
procedure TGmCanvas.PolyBezier(Points: array of TGmPoint; Measurement: TGmMeasurement);
var
AObject: TGmPolyBezierObject;
APolyPoints: TGmPolyPoints;
begin
ArrayToPolyPoints(Points, APolyPoints);
AObject := TGmPolyBezierObject.Create(FResourceTable);
AObject.Points[Measurement] := APolyPoints;
AObject.Pen := FResourceTable.PenList.AddPen(AsGmPen);
FLastObject := AddObjectToPage(AObject);
end;
procedure TGmCanvas.PolylineTo(Points: array of TGmPoint; Measurement: TGmMeasurement);
var
AObject: TGmPolylineToObject;
APolyPoints: TGmPolyPoints;
begin
ArrayToPolyPoints(Points, APolyPoints);
AObject := TGmPolylineToObject.Create(FResourceTable);
AObject.Points[Measurement] := APolyPoints;
AObject.Pen := FResourceTable.PenList.AddPen(AsGmPen);
FLastObject := AddObjectToPage(AObject);
end;
procedure TGmCanvas.PolyBezierTo(Points: array of TGmPoint; Measurement: TGmMeasurement);
var
AObject: TGmPolyBezierToObject;
APolyPoints: TGmPolyPoints;
begin
ArrayToPolyPoints(Points, APolyPoints);
AObject := TGmPolyBezierToObject.Create(FResourceTable);
AObject.Points[Measurement] := APolyPoints;
AObject.Pen := FResourceTable.PenList.AddPen(AsGmPen);
FLastObject := AddObjectToPage(AObject);
end;
procedure TGmCanvas.BeginPath;
var
AObject: TGmPathObject;
begin
AObject := TGmPathObject.Create(FResourceTable);
AObject.ObjectType := gmBeginPath;
AddObjectToPage(AObject);
end;
procedure TGmCanvas.EndPath;
var
AObject: TGmPathObject;
begin
AObject := TGmPathObject.Create(FResourceTable);
AObject.ObjectType := gmEndPath;
AddObjectToPage(AObject);
end;
procedure TGmCanvas.FillPath;
var
AObject: TGmPathObject;
begin
AObject := TGmPathObject.Create(FResourceTable);
AObject.ObjectType := gmFillPath;
AddObjectToPage(AObject);
end;
procedure TGmCanvas.StrokePath;
var
AObject: TGmPathObject;
begin
AObject := TGmPathObject.Create(FResourceTable);
AObject.ObjectType := gmStrokePath;
AddObjectToPage(AObject);
end;
procedure TGmCanvas.StrokeAndFillPath;
var
AObject: TGmPathObject;
begin
AObject := TGmPathObject.Create(FResourceTable);
AObject.ObjectType := gmStrokeAndFillPath;
AddObjectToPage(AObject);
end;
procedure TGmCanvas.CloseFigure;
var
AObject: TGmPathObject;
begin
AObject := TGmPathObject.Create(FResourceTable);
AObject.ObjectType := gmCloseFigure;
AddObjectToPage(AObject);
end;
procedure TGmCanvas.SetClipEllipse(x, y, x2, y2: Extended; Measurement: TGmMeasurement);
var
AObject: TGmClipEllipseObject;
ARect: TGmRect;
begin
AObject := TGmClipEllipseObject.Create(FResourceTable);
ARect := GmRect(x, y, x2, y2);
ARect := ConvertGmRect(ARect, Measurement, gmInches);
AObject.ClipRect := ARect;
AddObjectToPage(AObject);
end;
procedure TGmCanvas.SetClipRect(x, y, x2, y2: Extended; Measurement: TGmMeasurement);
var
AObject: TGmClipRectObject;
ARect: TGmRect;
begin
AObject := TGmClipRectObject.Create(FResourceTable);
ARect := GmRect(x, y, x2, y2);
ARect := ConvertGmRect(ARect, Measurement, gmInches);
AObject.ClipRect := ARect;
AddObjectToPage(AObject);
end;
procedure TGmCanvas.SetClipRoundRect(x, y, x2, y2, x3, y3: Extended; Measurement: TGmMeasurement);
var
AObject: TGmClipRoundRectObject;
ARect: TGmRect;
ACorners: TGmPoint;
begin
AObject := TGmClipRoundRectObject.Create(FResourceTable);
ARect := GmRect(x, y, x2, y2);
ACorners := GmPoint(x3, y3);
ARect := ConvertGmRect(ARect, Measurement, gmInches);
ACorners := ConvertGmPoint(ACorners, Measurement, gmInches);
AObject.ClipRect := ARect;
AObject.CornerRadius := ACorners;
AddObjectToPage(AObject);
end;
procedure TGmCanvas.RemoveClipRgn;
var
AObject: TGmRemoveClipObject;
begin
AObject := TGmRemoveClipObject.Create(FResourceTable);
AddObjectToPage(AObject);
end;
{$IFDEF D4+}
procedure TGmCanvas.SetClipEllipse(x, y, x2, y2: Extended);
begin
SetClipEllipse(x, y, x2, y2, FDefaultMeasurement);
end;
procedure TGmCanvas.SetClipRect(x, y, x2, y2: Extended);
begin
SetClipRect(x, y, x2, y2, FDefaultMeasurement);
end;
procedure TGmCanvas.SetClipRoundRect(x, y, x2, y2, x3, y3: Extended);
begin
SetClipRoundRect(x, y, x2, y2, x3, y3, FDefaultMeasurement);
end;
{$ENDIF}
procedure TGmCanvas.SetBrushValues(AColor: TColor; AStyle: TBrushStyle);
begin
FBrush.Color := AColor;
FBrush.Style := AStyle;
end;
procedure TGmCanvas.SetFontHeight(AHeight: Extended; Measurement: TGmMeasurement);
var
AsInches: Extended;
begin
AsInches := ConvertValue(AHeight, Measurement, gmInches);
FFont.Height := Round(AsInches * SCREEN_PPI);
end;
procedure TGmCanvas.SetFontValues(AName: string; ASize: integer; AColor: TColor; AStyle: TFontStyles);
begin
if AName <> '' then FFont.Name := AName;
FFont.Size := ASize;
FFont.Color := AColor;
FFont.Style := AStyle;
end;
procedure TGmCanvas.SetPenValues(AWidth: integer; AColor: TColor; AStyle: TPenStyle);
begin
FPen.Width := AWidth;
FPen.Color := AColor;
FPen.Style := AStyle;
end;
procedure TGmCanvas.LoadCanvasProperties;
begin
FCoordsRelativeTo := FSavedValues.FCoordsRelativeTo;
FBrush.Assign(FSavedValues.FBrush);
FFont.Assign(FSavedValues.FFont);
FPen.Assign(FSavedValues.FPen);
end;
procedure TGmCanvas.SaveCanvasProperties;
begin
FSavedValues.FCoordsRelativeTo := FCoordsRelativeTo;
FSavedValues.FBrush.Assign(FBrush);
FSavedValues.FFont.Assign(FFont);
FSavedValues.FPen.Assign(FPen);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -