|
THotPDF.RegisterFreeFormGouraudShading
|
Übersicht |
|
Deklariert eine PDF 1.3+ freie Gouraud-schattierte Dreiecksnetz-Schattierung (ISO 32000-1 8.7.4.5.4, /ShadingType 4) und bettet sie als Inline-Pattern-Typ-2-Eintrag in das Resources/Pattern-Verzeichnis der Seite ein — Verwenden Sie den zurückgegebenen Musternamen mit THPDFPage.SetFillPattern oder THPDFPage.SetStrokePattern, um einen Vektorverlauf zu zeichnen, dessen Farbe fließend über jedes Dreieck variiert
Delphi-Syntax: function RegisterFreeFormGouraudShading(XMin, YMin, XMax, YMax: Single; NumComponents: Integer; const Vertices: array of Extended): AnsiString;
C++-Syntax: AnsiString RegisterFreeFormGouraudShading(float XMin, float YMin, float XMax, float YMax, int NumComponents, const Extended* Vertices, int VertexElementCount);
Beschreibung Die Schattierung wird als einzelner indirekter Stream mit /ShadingType 4, /BitsPerCoordinate 16, /BitsPerComponent 8 und /BitsPerFlag 8 ausgegeben — Jeder Eckpunkt ist in Stream-Reihenfolge als 8 + NumComponents − 3 Bytes gepackt (ein 1-Byte-Flag (immer 0 für unabhängige Dreiecke), 2 Big-Endian-Bytes für die X-Koordinate, 2 Big-Endian-Bytes für die Y-Koordinate, und NumComponents 8-Bit-Farbkomponenten) — Das /Decode-Array bildet die 16-Bit-Koordinaten wieder auf das angegebene Benutzerraum-Rechteck [XMin, XMax] x [YMin, YMax] ab und jede Farbkomponente wieder auf [0, 1] Die Eckpunkte werden jeweils zu dritt als unabhängige Dreiecke verarbeitet — Die Anzahl der Extended-Werte, die Sie in Vertices übergeben, muss genau (2 + NumComponents) * 3 * TriangleCount betragen — Die Hilfsfunktion löst eine Ausnahme aus, wenn die Array-Länge kein Vielfaches des Schritts ist oder wenn die Anzahl der Eckpunkte kein Vielfaches von drei ist
XMin, YMin, XMax, YMax — das Benutzerraum-Rechteck, das das Netz begrenzt — Diese vier Werte werden die ersten vier Einträge von /Decode, sodass die 16-Bit-codierten Eckpunktkoordinaten wieder in den PDF-Benutzerraum abgebildet werden — Platzieren Sie sie in denselben Benutzerraum-Koordinaten, in die Sie zeichnen — für das HotPDF-Bildschirmkoordinaten-Rechteck bei (X, Y, W, H) ist das passende PDF-Benutzerraum-Rechteck (X, PageHeight - Y - H) bis (X + W, PageHeight - Y) NumComponents — Anzahl der Farbkomponenten pro Eckpunkt — Übergeben Sie 1 für DeviceGray, 3 für DeviceRGB oder 4 für DeviceCMYK — Jeder andere Wert löst eine Ausnahme aus — Der /ColorSpace-Eintrag der resultierenden Schattierung wird entsprechend festgelegt Vertices — flaches Array von Extended-Werten in der Reihenfolge (X, Y, c1...cN), wiederholt für jeden Eckpunkt — Die Koordinaten werden auf den Bereich [XMin, XMax] x [YMin, YMax] begrenzt und in 16-Bit-Ganzzahlen quantisiert; Farbkomponenten werden auf [0, 1] begrenzt und in 8-Bit-Ganzzahlen quantisiert — Benachbarte Dreiecke, die eine gemeinsame Kante haben, müssen die gemeinsamen Eckpunkte wortwörtlich wiederholen, da die registrierte Schattierung für jeden Eckpunkt ein Flag von 0 verwendet (unabhängige Dreiecke)
Rückgabewert: ein automatisch generierter Mustername (Sh1, Sh2, ...), der im Resources/Pattern-Verzeichnis der aktuellen Seite registriert ist — Gibt einen leeren String zurück, wenn StrictVersionLock aktiviert ist und die aktive Version unter PDF 1.3 liegt (andernfalls wird die Dokumentversion automatisch auf 1.3 erhöht)
Codebeispiel
Siehe auch RegisterDeviceN, RegisterSeparation, RegisterLabColorSpace, Version, PDF-Filterunterstützung
|