使用标签(图形(…),…)在插入的图形上绘制

使用标签(图形(…),…)在插入的图形上绘制

我想使用 Asymptote 来合成现有的 EPS 文件并在其上绘制一些内容。我使用建议方法使用label()并将graphic()EPS 文件放置在画布上。问题是,导入的图形被视为标签,位于之后完成的所有绘图之上。

假设我有一个使用以下 Asymptote 文件生成的 EPS 文件foo.asy(在我的例子中,EPS 实际上包含一个光栅图像,所以我不能仅仅在最终的 Asymptote 文件中包含创建 EPS 的命令):

fill(circle((0, 0), 10), blue + white);

现在我从以下 Asymptote 文件中引入 EPS 文件bar.asy

label(graphic("foo.eps"), (0, 0));
draw((-10, -10) -- (10, 10), black + 2);

这会导致蓝色圆圈绘制在黑线上方。

有没有办法以某种方式在标签上绘图,或者是否有其他方法来包含 EPS 文件而不使用label()

答案1

这里可以找到一个使用 Asymptote 在文件图像上绘图的示例:

https://tex.stackexchange.com/a/129801/484

你缺少的关键步骤是包括以下行

layer();

在添加图像之后,但在绘制任何应放置在其上的内容之前。

解释(对于一般读者来说——原帖作者似乎理解这一点):在 Asymptote(不包括 3d 内容)中,默认情况下,标签始终位于“绘图”元素之上,因此标签不会被隐藏。由于图像是作为一种标签导入的,因此只有其他标签会位于其上方;绘图元素将位于其下方,并且它们本身将被隐藏。

但是,该layer()命令改变了默认设置:layer()命令之后的任何内容都会位于其之前的所有内容之上,从而允许绘制的元素位于标签之上。

相关内容