用黑色角装饰 TikZ 节点

用黑色角装饰 TikZ 节点

我想用角落里的小黑框来装饰一个矩形节点: 使用 Gimp 的解决方案 :D

到目前为止,我能够使用 TikZ 库在左下角放置一个黑框decorations.markings

\tikzset{
  blackcorner/.style={ draw,
    decoration={ markings,
      mark=at position 0 with {
        \draw[very thick](0pt,1pt) -- (1pt,1pt) -- (1pt,0pt);
      }
    },
    postaction={decorate}
  }
}
\tikz{\node[blackcorner]{test};}

带标记的解决方案

但是,我无法在其他角落绘制黑框。是否可以使用装饰或其他方式来实现这一点?(此外,黑角非常靠近文本,如何在不增加高度的情况下增加节点的宽度?)

答案1

由于位置明确,您可以摆脱path picture节点。

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[corner stone/.style={draw,
  path picture={
    \foreach \x/\xi in {north/-1,south/1}{
      \foreach \y/\yi in {west/45,east/135}{
        \fill (path picture bounding box.\x\space\y) rectangle ++(\xi*\yi:#1);
      }
    }
  }
},
corner stone/.default=2mm
]
\node[corner stone] {My node};
\node[corner stone=3mm] at (0,2) {My node};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

append after command这是使用的定义来blackcorner绘制 4 个角的版本。

size=<dimension>可以使用可选参数配置尺寸blackcorner,如果需要,还可以包括角节点的其他选项。尽管名称如此,但下面的一个示例显示了如何创建蓝色的 blackcorner秒。

要增加文本和角落之间的边距,只需添加inner sep=<dimension>到节点的选项中即可。注意:不是作为选项blackcorner- 您不想在那里更改它。您想增加主节点的边距,因此边框离文本更远。

这一切的结果是

\tikz{%
  \node [blackcorner] {test};
  \node [blackcorner={size=2.5pt}, inner sep=5pt, blue] at (0,1) {test};
  \node [blackcorner={size=2.5pt, blue}, inner sep=5pt, blue] at (0,2) {test};
}

产生三个节点:底部节点具有默认的间距和角大小,全部为黑色;中间节点为蓝色,具有较大的角和边距,但角仍使用默认的黑色;最后,顶部节点也将角的颜色更改为蓝色。

3 个节点

完整代码:

\documentclass[tikz,border=10pt,multi]{standalone}
\usetikzlibrary{calc}
\begin{document}
\tikzset{%
  blackcorner/.style={%
    draw,
    append after command={%
      let \p1=(\tikzlastnode.south west), \p2=(\tikzlastnode.north west), \p3=(\tikzlastnode.north east), \p4=(\tikzlastnode.south east) in (\p1) node [black corner/.cd, #1, corner, anchor=south west] {} (\p2) node [black corner/.cd, #1, corner, anchor=north west] {} (\p3) node [black corner/.cd, #1, corner, anchor=north east] {} (\p4) node [black corner/.cd, #1, corner, anchor=south east] {}
    },
  },
  black corner/.search also={/tikz},
  black corner/.cd,
  corner/.style={%
    inner sep=0pt, draw, fill, minimum size=\cornersize,
  },
  size/.store in=\cornersize,
  size=1.8pt,
}
\tikz{%
  \node [blackcorner] {test};
  \node [blackcorner={size=2.5pt}, inner sep=5pt, blue] at (0,1) {test};
  \node [blackcorner={size=2.5pt, blue}, inner sep=5pt, blue] at (0,2) {test};
}
\end{document}

相关内容