我想突出显示由多个控件定义的弯曲路径(颜色、厚度)的一段,如下图所示。我已经尝试使用交叉点和剪切,但失败了。
最好用箭头标记突出显示段的端点。应突出显示的路径段以原始路径的“间隔”给出,例如在原始路径的 1/3 处开始突出显示,在路径的 5/7 处停止突出显示。
但事实上,如果我能以某种方式手动定义突出显示段的开始和停止,我会很高兴。
有任何想法吗?
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=1, >=stealth, ->]
\tikzstyle{node_style}=[inner sep=2pt, circle, fill=black]
\node[node_style, label=right:{$x$}] at (3,3) (x) {};
\node[node_style, label=below:{$y$}] at (0,0) (y) {};
\draw (y) .. controls ++(2,-0.1) .. (1,1) .. controls ++(-1.5,1.5) .. (2,2) .. controls ++(2,-0.3) ..(x);
\end{tikzpicture}
\end{document}
答案1
选择精确的 1/3 和 5/7 位置会很困难,但您可以利用两个中间点(1,1)
和,(2,2)
并在它们之间用粗红线绘制相同的贝塞尔曲线。还请注意,我将两端拉长了2pt
s 以补偿箭头的长度。如果您使用默认箭头而不是,则无需执行此操作stealth
。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=1, > = stealth]
\tikzstyle{node_style}=[inner sep=2pt, circle, fill=black]
\node[node_style, label=right:{$x$}] at (3,3) (x) {};
\node[node_style, label=below:{$y$}] at (0,0) (y) {};
\draw[->] (y.center)..controls ++(2,-0.1)..(1,1)..controls ++(-1.5,1.5)..(2,2)..controls ++(2,-0.3)..(x);
\draw[red,very thick,<->,shorten >=-2pt,shorten <=-2pt] (1,1)..controls ++(-1.5,1.5)..(2,2);
\end{tikzpicture}
\end{document}