Exemple 1. Translation du système de coordonnées
<?php function rectangle($ps) { ps_moveto($ps, 0, 0); ps_lineto($ps, 0, 50); ps_lineto($ps, 50, 50); ps_lineto($ps, 50, 0); ps_lineto($ps, 0, 0); ps_stroke($ps); }
$ps = ps_new(); if (!ps_open_file($ps, "translate.ps")) { print "Impossible d'ouvrir le fichier PostScript\n"; exit; }
ps_set_info($ps, "Creator", "translate.php"); ps_set_info($ps, "Author", "Uwe Steinmann"); ps_set_info($ps, "Title", "Exemple Translation"); ps_set_info($ps, "BoundingBox", "0 0 596 842");
$psfont = ps_findfont($ps, "Helvetica", "", 0);
ps_begin_page($ps, 596, 842); ps_set_text_pos($ps, 100, 100); ps_translate($ps, 500, 750); rectangle($ps); ps_translate($ps, -500, -750); ps_setfont($ps, $psfont, 8.0); ps_show($ps, "Texte à position initiale"); ps_end_page($ps);
ps_begin_page($ps, 596, 842); ps_set_text_pos($ps, 100, 100); ps_save($ps); ps_translate($ps, 500, 750); rectangle($ps); ps_restore($ps); ps_setfont($ps, $psfont, 8.0); ps_show($ps, "Texte à position initiale"); ps_end_page($ps);
ps_delete($ps); ?>
|
L'exemple ci-dessus démontre deux moyens possibles pour placer un
graphique (dans ce cas, simplement un rectangle) à n'importe quelle
position sur la page, tandis que le graphique en lui-même utilise son
propre système de coordonnées. Le truc est de changer l'origine du système
de coordonnées courant avant de dessiner le rectangle. La translation doit
être défaite après que le graphique ait été dessiné.
Sur la seconde page, une approche plus élégante et légèrement différente
est appliquée. Au lieu de défaire la translation avec le deuxième appel
de ps_translate(), le contexte graphique est
sauvegardé avant les modification du système de coordonnées et restauré
après le dessin du rectangle.
|