粗而有图案的箭头

粗而有图案的箭头

我想得到一个粗箭头,但不是全黑的,但有一个图案(例如,交叉影线)。我不确定如何得到这个。我有以下仍然给我一个黑色的箭头:

   \documentclass[landscape]{scrartcl}      

   \usepackage{tikz}
   \usetikzlibrary{shapes,shapes.multipart,shapes.geometric,fit,positioning,arrows,matrix,decorations.pathreplacing,patterns}

   \begin{document}

   \begin{tikzpicture}
   \tikzset{
   bigbigbox/.style = {minimum width=3.5cm, rectangle},
   bigbox/.style = {draw, rectangle},
   box/.style = {minimum width=2.7cm, rounded corners,rectangle, fill=blue!20},
   square/.style = {minimum width=15mm,minimum height=15mm}
   }

   \node[square,draw,text width=1.5cm,align=center] (a1) {Map Tasks};
   \node[square,draw,right of=a1,xshift=20mm,text width=1.5cm,align=center] (a2) {Mapper Input Cache};
   \node[square,draw,below of=a1,yshift=-15mm,text width=1.5cm,align=center] (a3) {Reduce Tasks};
   \node[square,draw,below of=a2,yshift=-15mm,text width=1.5cm,align=center] (a4) {Check Fixed Point};

   \draw[-triangle 90, line width=1mm, black,pattern=crosshatch,postaction=        {draw=black,pattern=crosshatch, line width=3mm, shorten >=0.2cm, -}] (a2.west) -- (a1.east);

   \node[bigbox] [fit = (a1) (a4)] (box1){};
   \end{tikzpicture}
   \end{document}

以下是我得到的结果:

在此处输入图片描述

答案1

PGF 手册关于模式库的规定:

该包定义了填充区域的模式。

关键词是填充

您在一条(几乎,见下文)没有面积的路径上使用了图案。Afill也不会被看到。

我提出的解决方案使用single arrow 形状使用以下模式:

\path let \p1=(a1.east), \p2=(a2.west), \n1={abs(\x2-\x1)} in node[
    draw,
    pattern=crosshatch,
    single arrow,
    rotate=180,
    minimum height=\n1,
    anchor=west,
    at=(a2.west),
    outer xsep=-.5\pgflinewidth,
] {};

这里发生了什么事?

  • draw:我们想要一个轮廓边框。
  • pattern=crosshatch
  • single arrow:这是的简短版本shape=single arrow,声明了节点的形状。
  • rotate=180:自然方向是 0°(右),我们将箭头转动,使其指向左。
  • minimum height=\n1:高度(即箭头的长度)设置为.east锚点到左节点的距离和.west锚点到右节点的距离。(该calc库用于let … in操作符。)
  • anchor=west:我们使用形状的.west锚点(轴的底部)来放置箭头。
  • at=(a2.west):节点的.west锚点(见上文)放置在.west正确节点的锚点处。
  • outer xsep=-.5\pgflinewidth:这是将轴的底线覆盖到与右节点的线完全对齐的秘诀。注释掉它可获得:

    在此处输入图片描述

    在我看来,这并不好。

巧合的是,箭头的默认尺寸与箭头线非常吻合。查看 PGF 手册第 48.5 节“箭头形状”以进一步更改箭头的外观。

几乎?

几乎意味着箭头本身使用了绘图,但粗线宽会覆盖它。在下面的示例中,不透明度设置为 50%,以显示箭头包含填充。库中使用的相应 PGF 命令arrows\pgfusepathqfillstroke

代码

\draw[line width=5mm,opacity=.5,-triangle 90,pattern=crosshatch] (0,0) -- (2,0);

输出

在此处输入图片描述

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{
    shapes.arrows,
    positioning,
    patterns,
    calc,
}
\tikzset{
    square/.style={
        minimum width=15mm,
        minimum height=15mm,
    },
}
\begin{document}
\begin{tikzpicture}
\node[square,draw,text width=1.5cm,align=center]                          (a1) {Map Tasks};
\node[square,draw,right of=a1,xshift=20mm,text width=1.5cm,align=center]  (a2) {Mapper Input Cache};
\path let \p1=(a1.east), \p2=(a2.west), \n1={abs(\x2-\x1)} in node[
    draw,
    pattern=crosshatch,
    single arrow,
    rotate=180,
    minimum height=\n1,
    anchor=west,
    at=(a2.west),
    outer xsep=-.5\pgflinewidth,
] {};
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容