TiKZ 图案有角度吗?

TiKZ 图案有角度吗?

pattern = sixpointed stars我希望得到类似于(或fivepointed;无所谓)提供的结果,但底层网格呈一定角度。我理解这一点无法做到直接使用模式库,所以我可能必须使用几个嵌套的 for 循环和一些剪辑来完成它。

有没有标准或简单的方法可以做到这一点?具体来说,获得一颗星星然后可以复制的最简单的方法是什么?

答案1

这个(非常)新的patterns.meta库允许更轻松地指定模式,特别是允许将转换应用于模式图块。

它仍然处于开发阶段(尚无文档),仅支持 PDF 输出,并且仅在最新的 CVS 版本中可用,但或多或​​少是稳定的(所以您已经收到警告)。

\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{patterns.meta}
\tikzdeclarepattern{name=Stars,
  type=uncolored,
  tile bounding box={(-5pt,-5pt) and (5pt,5pt)},
  tiling size={(\tikztilesize, \tikztilesize)},
  parameters={\tikzstarpoints,\tikzstarradius,\tikzstarrotate,\tikztilesize},
  tiling transformation={rotate=\tikzstarrotate},
  keys={  
    points/.store count=\tikzstarpoints,   points=5,
    radius/.store length=\tikzstarradius,  radius=3pt,
    rotate/.set macro=\tikzstarrotate,     rotate=0,
    tile size/.store length=\tikztilesize, tile size=10pt
  },
  code={
    \pgfmathparse{180/\tikzstarpoints}\let\a=\pgfmathresult
    \fill (90:\tikzstarradius) \foreach \i in {1,...,\tikzstarpoints}{
      -- (90+2*\i*\a-\a:\tikzstarradius/2) -- (90+2*\i*\a:\tikzstarradius)
    } -- cycle;
  }
}   

\begin{document}
\begin{tikzpicture}
\draw [pattern=Stars, pattern color=blue]             (0,0) rectangle ++(2,2);
\draw [pattern={Stars[points=7, tile size=15pt]}]     (2,0) rectangle ++(2,2);
\draw [pattern={Stars[rotate=45]}, pattern color=red] (0,2) rectangle ++(2,2);
\draw [pattern={Stars[rotate=30,points=4,radius=5]}]  (2,2) rectangle ++(2,2);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容