TikZ:箭头尖端的形状

TikZ:箭头尖端的形状

我有一个名为 的自定义 TikZ 箭头myarrow。如何将其变成形状?我希望能够将其放置在任何我想要的位置,而不需要下面的边缘,使用如下命令:

\node [myarrowshape] at (0,0) {};

答案1

如果您只是想要将箭头放在某处,这里有一种可能性(有两个版本)。两个版本都使用相同的方法:decorations.markings使用\arrow

更新 :由于第一个版本存在一些缺点,因此这里使用 代替 进行pic修改path picture

  • 您可以像这样设置箭头,pic{arrow=latex}或者更改默认箭头。
  • 要缩放箭头,您可以更改线宽,例如pic[line width=3pt]{arrow}
  • 箭头不在坐标中心。如果你想让它居中,你可以看看这个问题

以下是产生与第一种方法相同(最多随机选择)图像的代码。

\documentclass[tikz,border=7pt,convert={density=1400}]{standalone}
\usetikzlibrary{decorations.markings}
%\usetikzlibrary{arrows.meta}
\tikzset{
  markarrow/.style={
    decoration={ markings,
      mark=at position .5 with {\arrow{#1}}
    },
    postaction={decorate}
  },
  arrow/.pic = {
    \path[pic actions, markarrow={#1}] (-1pt,0) -- (1pt,0);
  },
  pics/arrow/.default={stealth}
}
\begin{document}
  \begin{tikzpicture}

    \foreach \i in {1,...,100}
      \pic[rotate={random(0,360)}, opacity={rnd}, blue]
          at ({2*rnd},{2*rnd}) {arrow};

    \pic[red] at (1,1) {arrow};

  \end{tikzpicture}
\end{document}

在此处输入图片描述

第一个版本:使用问题中要求的语法。

\documentclass[tikz,border=7pt,convert={density=1400}]{standalone}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows.meta}
\tikzset{
  markarrow/.style={
    decoration={ markings,
      mark=at position .5 with {\arrow[#1]{stealth}}
    },
    postaction={decorate}
  },
  myarrow/.style={ inner sep = 7pt,
    path picture={
      \path[markarrow={#1}] ([xshift=-1pt]path picture bounding box.center) --++(2pt,0);
    }
  }
}
\begin{document}
  \begin{tikzpicture}

    \foreach \i in {1,...,100}
      \node[rotate={random(0,360)}, opacity={rnd}, myarrow=blue]
          at ({2*rnd},{2*rnd}) {};

    \node[myarrow=red] at (1,1) {};

  \end{tikzpicture}
\end{document}

此版本有一些缺点:

  • path picture不是为此设计的,而是为了填充图片;
  • 根据设计,它被剪裁在节点内部,因此如果我们想缩放箭头,我们也必须缩放包含的节点。因此,使用此方法进行缩放很棘手。

相关内容