Kontakt
DSVGO
clsPDF arbeitet mit 3 Ebenen, welche quasi übereinandergelegt werden:
Hier landen alle Zeichenoperationen, die vor der ersten Print...-Methode einer Seite durchgeführt worden sind. Dies kann etwa für "Wasserzeichen" oder farbige Hintergrundflächen genutzt werden.
Hier erfolgt die Ausgabe der mit den Print...-Methoden bereitgestellten Texte.
Hier landen alle Zeichenoperationen, die nach der ersten Print...-Methode einer Seite durchgeführt worden sind. Dies kann etwa für Kopf- und Fußzeilen genutzt werden (oder eben für die eigentlichen Grafiken).
Tipp: Die hier vorgestellten Beispiele sind auch im Download enthalten.
With pdf 'Grüne Quadratfläche mit 100mm x 100mm: .FillColor = vbGreen .DrawBox mmPoints(10), mmPoints(10), mmPoints(100), mmPoints(100), True 'Gelbes Diagonalkreuz aus 10mm breiten Balken: .DrawColor = vbYellow .DrawWidth = mmPoints(10) .DrawLine mmPoints(10), mmPoints(10), mmPoints(110), mmPoints(110) .DrawLine mmPoints(10), mmPoints(110), mmPoints(110), mmPoints(10) 'Roter Rahmen in 1mm Stärke: .DrawColor = vbRed .DrawWidth = mmPoints(1) .DrawBox mmPoints(10), mmPoints(10), mmPoints(100), mmPoints(100) End With
Man beachte, wie die verschiedenen Zeichenoperationen übereinander gelegt werden.
With pdf '3/4-"Kreis"umriss mit Winkelangaben... .DrawColor = vbBlue .FillColor = vbBlack .MoveTo 170, 340 For i = 0 To 270 Step 30 w = i / 180 * PI 'Umrechnung Grad/Radiant .DrawLineTo 170 + 150 * Cos(w), 340 - 150 * Sin(w) .DrawText 170, 340, "- " & i & " Grad -", w Next i .DrawLineTo 170, 340 End With
Durch die Deklaration einer clsPDF-Objektvariablen via "WithEvents" kann die Komponente der Anwendung jedesmal mitteilen, wenn eine Seite gerade begonnen oder beendet wurde.
Private WithEvents pdf As clsPDF
Wichtig: Solche Deklarationen werden von VB5 nur in Klassen (".cls", ".frm", ".ctl") zugelassen, also nicht in normalen Modulen (".bas").
Dieses Ereignis wird immer dann ausgelöst, wenn die erste Zeile einer Seite ausgegeben werden soll (und natürlich nach NewPage).
Private Sub pdf_PageStarted() Dim Width As Integer Dim Height As Integer 'Die ersten 7 Zeilen jeder Seite gelb hinterlegen: Width = pdf.Width - 2 * pdf.LeftMargin Height = 7 * pdf.FontSize pdf.FillColor = vbYellow pdf.DrawBox pdf.LeftMargin, pdf.TopMargin, Width, Height, True End Sub
Dieses Ereignis wird immer dann ausgelöst, wenn die letzte Zeile einer Seite (vgl. LinesPerPage) ausgegeben worden ist (und natürlich unmittelbar vor NewPage).
Private Sub pdf_PageFinished() Dim Width As Integer Dim Height As Integer 'Vorhandenen Text passend(!) einrahmen: Width = pdf.Width - 2 * pdf.LeftMargin Height = pdf.LineNumber * pdf.FontSize pdf.DrawColor = vbBlue pdf.DrawBox pdf.LeftMargin, pdf.TopMargin, Width, Height 'Fußzeile: pdf.FillColor = vbRed pdf.DrawText pdf.LeftMargin, pdf.Height - 2 * pdf.FontSize, _ "Seite " & pdf.PageNumber & " hat " & pdf.LineNumber & " Zeilen" End Sub
© Jost Schwider, 11.04.2005-11.04.2005 - http://vb-tec.de/pdf-draw.htm