PHP Conference Japan 2024

ps_translate

(PECL ps >= 1.1.0)

ps_translate设置平移

描述

ps_translate(资源 $psdoc, 浮点数 $x, 浮点数 $y): 布尔值

设置坐标系的新初始点。

参数

psdoc

PostScript 文件的资源标识符,由 ps_new() 返回。

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
"无法打开 PostScript 文件\n";
exit;
}

ps_set_info($ps, "Creator", "translate.php");
ps_set_info($ps, "Author", "Uwe Steinmann");
ps_set_info($ps, "Title", "平移示例");
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, "初始位置处的文本");
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, "初始位置处的文本");
ps_end_page($ps);

ps_delete($ps);
?>

上面的示例演示了两种将图形(在本例中只是一个矩形)放置在页面上任何位置的可能方法,而图形本身使用其自己的坐标系。诀窍是在绘制矩形之前更改当前坐标系的原点。图形绘制完成后必须撤消平移。

在第二页上应用了一种略微不同且更优雅的方法。与其使用 ps_translate() 的第二次调用来撤消平移,不如在修改坐标系之前保存图形上下文,并在绘制矩形之后恢复它。

参见

添加注释

用户贡献的注释

此页面尚无用户贡献的注释。
To Top