实线路径中的虚线子路径

实线路径中的虚线子路径

我想绘制一条包含多条线段的路径,但其中一条线段应该具有与其他线段不同的样式:

\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,因此点实际上是圆形,但这当然可以更改。

在此处输入图片描述

相关内容