如何在 TikZ 中放大箭头并改变其颜色?

如何在 TikZ 中放大箭头并改变其颜色?

我用 画了一条线,末端有一个箭头\draw[->] ...。现在我想把箭头放大,并将其颜色改为红色(不影响线条)。有人知道怎么做吗?

答案1

以下是三种有效的方法:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{decorations.markings}

\begin{document}
\begin{tikzpicture}

\draw[red,
    decoration={markings,mark=at position 1 with {\arrow[scale=4,blue]{>}}},
    postaction={decorate},
    shorten >=0.4pt
    ]
    (0,1.0) -- (2,1.0);

\draw[draw=red,-triangle 90,fill=blue]  (0,0.5) -- (2,0.5);

\draw[red]  (0,0) -- (2,0);
\draw [-to,shorten >=-1pt,gray,ultra thick] (1.99,0) -- (2,0); 

\end{tikzpicture}
\end{document}

在此处输入图片描述

我认为这里提出的第一种方法可能是可行的方法,但也许其他人会提出更优雅的解决方案。

答案2

从 PGF 3.0(可能是另一个版本;仅根据手册)开始,与使用帖子装饰相比,更改箭头尖端的样式要容易得多。以下是答案中给出的三个示例的类似版本https://tex.stackexchange.com/a/27287/6993由@Peter Grill 撰写:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}

\begin{document}
\begin{tikzpicture}    

  \draw[red, arrows={->[scale=4,blue]}] (0,0.0) -- (2,0.0);
  \draw[red, arrows={-Triangle[angle=90:10pt,red,fill=blue]}]  (0,1.0) -- (2,1.0);
  \draw[red, arrows={->[line width=5pt,gray,length=5mm,width=10mm]}] (0,2.0) -- (2,2.0); 

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

我同意 Peter 的解决方案是可行的,而且我认为更优雅(和可重用)的解决方案是使用 定义样式\tikzset。下面的代码将使样式big blue arrow在文档中的任何图片中可用。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{decorations.markings}

\begin{document}

\tikzset{
  big blue arrow/.style={
    decoration={markings,mark=at position 1 with {\arrow[scale=4,blue]{>}}},
    postaction={decorate},
    shorten >=0.4pt}}

\begin{tikzpicture}    
\draw[red, big blue arrow] (0,1.0) -- (2,1.0);

\draw[draw=red,-triangle 90,fill=blue]  (0,0.5) -- (2,0.5);

\draw[red]  (0,0) -- (2,0);
\draw [-to,shorten >=-1pt,gray,ultra thick] (1.99,0) -- (2,0); 

\end{tikzpicture}
\end{document}

定义接受参数的样式并指定默认值也很容易(我希望代码是不言自明的):

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{decorations.markings}

\begin{document}

\tikzset{
  big arrow/.style={
    decoration={markings,mark=at position 1 with {\arrow[scale=4,#1]{>}}},
    postaction={decorate},
    shorten >=0.4pt},
  big arrow/.default=blue}

\begin{tikzpicture}

\draw[red, big arrow] (0,1.0) -- (2,1.0);

\draw[red, big arrow=green]  (0,0.5) -- (2,0.5);

\end{tikzpicture}
\end{document}

输出

相关内容