2024 年 PHP Conference Japan

ps_translate

(PECL ps >= 1.1.0)

ps_translate設定平移

說明

ps_translate(資源 $psdoc, 浮點數 $x, 浮點數 $y): 布林值

設定座標系統的新起始點。

參數

psdoc

ps_new() 傳回的 PostScript 檔案資源識別碼。

x

平移後座標系統原點的 x 座標。

y

平移後座標系統原點的 y 座標。

返回值

成功時返回 true,失敗時返回 false

範例

範例 #1 座標系統的平移

<?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
"Cannot open PostScript file\n";
exit;
}

ps_set_info($ps, "Creator", "translate.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "Translated example");
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, "Text at initial position");
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, "Text at initial position");
ps_end_page($ps);

ps_delete($ps);
?>

上述範例展示了兩種將圖形(此例中僅為矩形)放置在頁面上任何位置的可能方法,而圖形本身使用其自身的座標系統。訣竅是在繪製矩形之前更改當前座標系統的原點。繪製圖形後,必須復原平移操作。

在第二頁上,應用了一種略有不同且更優雅的方法。並非使用第二次呼叫 ps_translate() 來復原平移,而是在修改座標系統之前儲存圖形上下文,並在繪製矩形之後恢復。

另請參閱

新增筆記

使用者提供的筆記

此頁面沒有使用者提供的筆記。
To Top