tikz 节点框架两侧有不同颜色

tikz 节点框架两侧有不同颜色

我有一个表格,并使用 tikz 在其周围创建一个框架。现在它看起来像这样:

\documentclass{scrartcl}
\usepackage{tikz}
\begin{document}
\tikz\node[draw=black,ultra thick,double=gray,inner sep=.3pt+\pgflinewidth]{
\begin{tabular}{l|l}
A & B\\
\hline
C & D\\
\end{tabular}};
\end{document}

对于一些非常简单的 3D 效果,我想分别调整框架部分的颜色。例如,在框架的顶部和右侧部分,外线为黑色,内线为灰色。而在左侧和底部部分,外线为圆形。

编辑: 我在 HTML/CSS 中做了一个最简单的示例:

在此处输入图片描述

为了获得所需的效果,我需要将边缘形成 45° 角。

答案1

这是一个可能的解决方案;该\myboxed命令用具有所要求的规范的框架围绕其内容;语法是:

\myboxed[<length>][<color1>][<color2>]{<contents>}

<length>控制框架的宽度(默认值= 2pt);使用第二和第三个可选参数,您可以更改使用的颜色(默认值=blackgray):

\documentclass{article}
\usepackage{xparse}
\usepackage{tikz}

\newlength\unit

\NewDocumentCommand\myboxed{O{2pt}O{black}O{gray}m}{%
\setlength\unit{#1}
\begin{tikzpicture}
\node[inner sep=0pt] (a) {#4};
\fill[#2] (a.south east) -- 
  ([xshift=\unit,yshift=-\unit]a.south east) |- 
  ([xshift=-\unit,yshift=\unit]a.north west) -- 
  (a.north west) -| 
  (a.south east) -- 
  cycle;
\fill[#3] (a.south east) -- 
  ([xshift=\unit,yshift=-\unit]a.south east) -| 
  ([xshift=-\unit,yshift=\unit]a.north west) -- 
  (a.north west) |- 
  (a.south east) -- 
  cycle;
\fill[#3] ([xshift=\unit,yshift=-\unit]a.south east) -- 
  ([xshift=2*\unit,yshift=-2*\unit]a.south east) |- 
  ([xshift=-2*\unit,yshift=2*\unit]a.north west) -- 
  ([xshift=-\unit,yshift=\unit]a.north west) -|
  ([xshift=\unit,yshift=\unit]a.south east) -- 
  cycle;
\fill[#2] ([xshift=\unit,yshift=-\unit]a.south east) -- 
  ([xshift=2*\unit,yshift=-2*\unit]a.south east) -| 
  ([xshift=-2*\unit,yshift=2*\unit]a.north west) -- 
  ([xshift=-\unit,yshift=\unit]a.north west) |- 
  ([xshift=-\unit,yshift=-\unit]a.south east) -- 
  cycle;
\end{tikzpicture}
}

\begin{document}

\myboxed{\begin{tabular}{l|l}
A & B \\
\hline
C & D \\
\end{tabular}}\quad
\myboxed[4pt]{\begin{tabular}{l|l|l}
A & B & C \\
\hline
C & D & E \\
\hline
F & G & H \\
\end{tabular}}\quad
\myboxed[6pt][black!80][gray!50]{\begin{tabular}{l|l|l}
A & B & C \\
\hline
C & D & E \\
\hline
F & G & H \\
\end{tabular}}

\end{document}

在此处输入图片描述

答案2

在 Tikz 中,获取有角度的线帽并不是那么简单(参见TikZ:中途改变路径的颜色)因此,需要手动绘制额外的部分,要么作为完整的矩形路径,要么只是在尖端周围玩弄(可能使用新箭头。请参阅 Luigi 的奇迹是否可以更改 TikZ/PGF 中箭头的大小?

这是我能想到的最简单的

\documentclass[tikz]{standalone}

\newcommand\htmlbutton[4]{
    \foreach \x/\z/\y in {|-/-|/#3,-|/|-/#4}{
        \fill[fill=\y,line join=bevel] ([shift={(135:#2)}]#1.north west) \x
        ([shift={(-45:#2)}]#1.south east) -- (#1.south east) \z 
        (#1.north west)--cycle;
    }
}

\begin{document}
\begin{tikzpicture}
\node[outer sep=0,inner sep=1pt] (a) {Test test};
\htmlbutton{a}{2pt}{gray}{gray!40}
\end{tikzpicture}
\end{document}

在此处输入图片描述

您可以添加另一个具有对比色的图层以获得 3D 效果。

相关内容