![TikZ 中具有角度图案的线](https://linux22.com/image/314830/TikZ%20%E4%B8%AD%E5%85%B7%E6%9C%89%E8%A7%92%E5%BA%A6%E5%9B%BE%E6%A1%88%E7%9A%84%E7%BA%BF.png)
有没有办法在 TikZ 中为(直)线定义 90 度角图案?
图案应沿着线条方向。
答案1
如果您不介意白色箭头,那么这很容易,但可能需要进行调整才能获得正确的间距。
\documentclass[border=5mm,tikz]{standalone}
\usetikzlibrary{decorations.markings,arrows.meta}
\begin{document}
\begin{tikzpicture}[arrow marks/.style={
decoration={
markings,pre length=2\pgflinewidth,post length=.5\pgflinewidth,
mark={
between positions 0 and 1 step 0.2 with {
\arrow[white,line width=1.1\pgflinewidth]{Fast Triangle}
}
}
}
}
]
\draw[line cap=round,line width=5mm,postaction=decorate,arrow marks] (0,0) -- (5,0);
\end{tikzpicture}
\end{document}
根据您的使用情况,您可以添加越来越多的选项,从哪里开始,在哪里结束,如果路径上有角落该怎么做等等。如果您不想将其涂成白色,那么您必须手动创建路径的初始部分和最终部分,然后放置黑色部分。
答案2
这是一个简单的元帖子任意路径的方法。
如果您想经常使用装饰循环,您可以将其制成一个函数。
prologues := 3;
outputtemplate := "%j%c.eps";
beginfig(1);
z1 = origin;
z2 = (144,34);
path p; p = z1 {right} .. z2;
draw p withpen pencircle scaled 2;
% make the corners and ends squared
interim linecap := squared;
interim linejoin := mitered;
% n = number of chevrons, s=number to skip at start and end
% w = chevron width
n = 50; s=2; w=1;
for i=s upto n-s:
undraw (left--origin--up) scaled 2
rotated 45
rotated angle direction i/n of p
shifted point i/n of p
withpen pencircle scaled w;
endfor
endfig;
end.