Skewing funktioniert durch Ändern der aktuellen Transformationsmatrix, es ist überhaupt nicht zentriert.
Die Bilder werden von der linken unteren Ecke beschrieben, es sei denn, Sie ändern das CTM weiter, was beim Drucken in PostScript aus Umgebungen, in denen Bilder von oben nach unten gezeichnet werden, üblich ist.
Um Ihr Problem zu lösen, müssen Sie die im PLRM beschriebene Matrixmanipulation und Mathematik verstehen.
Vorausgesetzt, Sie wenden die Concat an dem Punkt unmittelbar vor dem Zeichnen des Bildes an, und keine anderen CTM-Manipulationen stattgefunden haben, dann ist die untere linke Ecke Ihres Bildes auf 0,0. Die Concat wird dies nicht beeinflussen (außer Sie haben ein Tx und Ty Mitglied in der Matrix), aber es wird ändern, wo das Bild gezeichnet wird. Was Sie tun müssen, ist die Koordinate des Mittelpunkts Ihres Bildes zu berechnen, wenn es normal gezeichnet wird, berechnen Sie, wo diese Koordinate nach der Anwendung der modifizierten CTM enden wird, und passen Sie dann die Schermatrix durch Hinzufügen von Tx und Ty an Werte so, dass die Koordinate des Zentrums in der erforderlichen Position ist. Oder übersetzen Sie den Ursprung entsprechend.
Der Schlüsselpunkt (wahrscheinlich) ist, dass Bilder ihre eigene Matrix haben, die oben auf dem CTM angewendet wird; Um die Benutzerraumkoordinate der Bildmitte zu berechnen, müssen Sie die Bildmatrix selbst auf die CTM anwenden. Und Sie müssen es erneut mit Ihrer Schermatrix durchführen, um die Position des Mittelpunkts des transformierten Bildes zu berechnen. Sobald Sie die Koordinaten des Mittelpunkts des Vanillebildes und des Mittelpunkts des gescherten Bildes haben, wissen Sie, wie Sie den aktuellen Punkt so übersetzen, dass die Mittelpunktkoordinate unverändert bleibt.
Sie haben kein Beispiel angegeben, so dass ich es nicht für Sie durcharbeiten kann und ich habe keine einfache Arbeit zur Hand. Ich werde versuchen, eine zu finden, wenn ich Zeit bekomme, und ich werde es hier veröffentlichen, wenn ich es tue.