我正在用 TikZ 画一条弯曲的线,比如说使用
\draw (0,0) to[out=-45, in=-135] (0,5);
有没有办法定义虚线图案,使得该弧的前三分之一完全存在,后三分之一为虚线,最后三分之一不可见?换句话说,虚线图案是否可以以某种方式取决于线的长度?
对于直线,我可以想象一种解决方法,只需将线分成三部分,但在这种情况下这(至少对我来说)实际上是不可能的。
答案1
您可以使用装饰来获得所需的结果。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\tikzset{
every curvepart/.style={},
curvepart/.style n args={3}{
postaction={black,every curvepart,#1, decorate,
decoration={curveto,
pre=moveto, pre length=#2*\pgfdecoratedinputsegmentlength,
post=moveto, post length=(1-#3)*\pgfdecoratedinputsegmentlength
}}}
}
\begin{document}
\begin{tikzpicture}
\path[
every curvepart/.style={draw,very thick},
curvepart={solid}{0}{1/3},
curvepart={dashed}{1/3}{2/3},
](0,0) to[out=-45, in=-135](0,5);
\end{tikzpicture}
%
\begin{tikzpicture}
\path[draw,orange!25,line width=4pt,
every curvepart/.style={draw,very thick},
curvepart={solid,purple}{0}{1/3},
curvepart={dashed,green}{1/3}{2/3},
curvepart={dotted,blue}{2/3}{1}
](0,0) to[out=-45, in=-135](0,5);
\end{tikzpicture}
%
\begin{tikzpicture}
\path[draw,orange!25,line width=4pt,
every curvepart/.style={draw,dashed,very thick},
curvepart={purple}{.1}{.2},
curvepart={blue}{.5}{.6},
curvepart={}{.9}{1},
curvepart={green}{.3}{.4},
curvepart={orange!80!black}{.7}{.8}
](0,0) to[out=-45, in=-135](0,5);
\end{tikzpicture}
\end{document}