我想绘制一条包含多条线段的路径,但其中一条线段应该具有与其他线段不同的样式:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (-1,-1) rectangle (4,3);
\begin{scope}[yshift=1.3cm]
\draw (0,0) -- +(1,0);
\draw [dotted] (1,0) -- +(1,0);
\draw (2,0) -| +(1,1);
\end{scope}
\begin{scope}
\draw (0,0) -- ++(1,0) -- ++(1,0) -| +(1,1); % draw the middle
% segment dotted?
\end{scope}
\end{tikzpicture}
\end{document}
如何仅使用单个 \draw - 命令绘制顶部线条?如您所见,使用 3 步方法时,我必须自行处理坐标,我希望 tikz 能够做到这一点。
答案1
我认为唯一可能实现这一点的方法就是使用装饰。尽管您可以使用坐标,但您不需要跟踪实际的绝对坐标。
\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}
\tikzset{
dotted anywhere/.style={
decoration={
markings,
mark=between positions 0 and 1
step 5\pgflinewidth
with {\fill circle[radius=.5\pgflinewidth];}
}
}
}
\begin{document}
\begin{tikzpicture}
\draw (-1,-1) rectangle (4,3);
\begin{scope}[yshift=1.3cm]
\draw (0,0) -- +(1,0) coordinate (tmp);
% The tmp coordinate is used to continue the drawing on the next path specification
\draw [dotted] (tmp) -- +(1,0) coordinate (tmp);
\draw (tmp) -| +(1,1);
\end{scope}
\begin{scope}
\draw (0,0) -- ++(1,0) decorate[dotted anywhere]{-- ++(1,0)} -| +(1,1); % draw the middle
\end{scope}
\end{tikzpicture}
\end{document}
一个细节:正常的 tikzdotted
样式实际上不是“点状”,点实际上是正方形。我制作了上面的 MWE,因此点实际上是圆形,但这当然可以更改。