如何使用 TikZ 单边填充线条?

如何使用 TikZ 单边填充线条?

通常,在 TikZ 中绘制线条时,会在线的两侧添加“材质”以使其可见。请考虑下面的图像(不是使用 TikZ 绘制的)。如果我想在 A 和 B 之间的红色路径上绘制一条黑色且相当粗的线,那么它会像顶部线条一样出现。但是,是否可以使线条仅填充路径的左侧,例如在底部线条中?线条的末端(圆形或方形)并不重要。线路填充:双面、单面

我现在能想到的唯一解决方案是定义某种补丁或填充,以实际定义线边界的精确坐标。我希望有一个更简单的解决方案。

答案1

可以使用剪辑将线的一半绘制为红色:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
  \tikzstyle{myline} = [
    ultra thick,
    line cap=round,
  ]
  \draw[
    myline,
    every node/.style={above, text=red, font=\sffamily},
  ]
    (0, 0) coordinate (A) node {A}
    --
    (3, 1) coordinate (B) node {B}
  ;
  \begin{scope}% limit range of clip
    \clip[overlay]
      ($(A)!-2pt!(B)$) coordinate (tmpA)
      -- ($(B)!-2pt!(A)$) coordinate (tmpB)
      -- ($(tmpB)!2pt!90:(tmpA)$)
      -- ($(tmpA)!2pt!-90:(tmpB)$)
      -- cycle
    ;
    \draw[myline, red] (A) -- (B);
  \end{scope}
\end{tikzpicture}
\end{document}

结果

版本,显示剪辑区域:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
  \tikzstyle{myline} = [
    ultra thick,
    line cap=round,
  ]
  \draw[
    myline,
    every node/.style={above, text=red, font=\sffamily},
  ]
    (0, 0) coordinate (A) node {A}
    --
    (3, 1) coordinate (B) node {B}
  ;
  \begin{scope}[green]% limit range of clip
    \draw[clip,overlay]
      ($(A)!-2pt!(B)$) coordinate (tmpA)
      -- ($(B)!-2pt!(A)$) coordinate (tmpB)
      -- ($(tmpB)!2pt!90:(tmpA)$)
      -- ($(tmpA)!2pt!-90:(tmpB)$)
      -- cycle
    ;
    \draw[
      myline,
      red,
    ] (A) -- (B);
  \end{scope}
\end{tikzpicture}
\end{document}

带剪辑区域的结果

相关内容