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

📄 gmcanvas.pas

📁 GmPrintSuite 2.96.7] a
💻 PAS
📖 第 1 页 / 共 3 页
字号:

{$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 + -