图案的一个问题是,你永远不知道单个图块将如何铺在区域上。例如,如果你使用星形图案,有时区域左侧的星形会被分成两半,有时它们会是完整的。有没有什么方法可以控制图块如何铺在区域上?
答案1
这些图案不是在 tikz/pgf 级别绘制的,而是为了提高效率而“传递”到驱动语言(pdf、postscript),该语言使用自己的图案程序。
您可以将这些图案想象为“已绘制”在不可见的底层并覆盖整个页面。当您用该图案填充形状时,您只是用该形状切割了一个“洞”,通过这个洞可以看到下面的图案。这个 MWE 应该可以澄清我的意思。请注意,即使它们属于不同的 tikz 图形,图案似乎从一个矩形“延续”到另一个矩形。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\usetikzlibrary{patterns}
\tikz{
\draw[pattern=fivepointed stars] (0,0) rectangle (2,1);
}x%
\tikz{
\draw[pattern=fivepointed stars] (0,0) rectangle (2,1);
}
\tikz{
\draw[pattern=fivepointed stars] (0,0) rectangle (2,1);
}xxx%
\tikz{
\draw[pattern=fivepointed stars] (0,0) rectangle (2,1);
}
\end{document}
更糟糕的是,“底层模式”因最终驱动程序(PostScript、PDF 或 SVG)而异。引用 TikZ 手册:
图案的相位定义不明确,也就是说,不清楚“第一个”图块的原点在哪里。更准确地说,PostScript 和 pdf 与 svg 对原点的定义不同。PostScript 和 pdf 定义了一个固定的原点,与路径所在的位置无关。
所以答案显然是你无法从 tikz/pgf 影响这种映射。