细分并填充 Tikz 矩形

细分并填充 Tikz 矩形

我的图片中有两个节点(绘制为矩形),一个填充绿色,另一个填充红色。我希望生成第三个“矩形”,以显示拼接这两个矩形并将它们重新缝合在一起的效果。

或者换句话说,我希望生成一个宽度为起始矩形两倍的矩形,并将其细分为更小的段,每个段交替填充红色和绿色。

给出我的照片:

\begin{tikzpicture}[node distance=5mm]
  \node [fill=red!30,minimum width=40mm] (b1) {Bank 1 \unit[1024]{MiB}};
  \node [fill=green!30,minimum width=40mm,right=of b1] (b2) {Bank 2 \unit[1024]{MiB}};
\end{tikzpicture}

我已经能够使用两个\foreach循环来“创建”所需的效果:

\foreach \n in {0,2,...,10}
  \draw [fill=red!30] (\n*6.66mm,1) +(-3.33mm,0) rectangle
  ++(3.33mm,5mm);
\foreach \n in {1,3,...,11}
  \draw [fill=green!30] (\n*6.66mm,1) +(-3.33mm,0) rectangle
  ++(3.33mm,5mm);

但是,这需要几个手动因素(40 / 6 = 6.66,6.66 / 2 = 3.33),并且由于使用绝对坐标,我无法将其定位在现有的两个节点下。

有没有更好的方法可以让我更多/更轻松地控制“组”的定位?我研究过分割矩形,但这似乎仅限于四个水平分割。

答案1

您可以使用链并使用未分裂节点的锚点来定位链中的第一个节点:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{chains}



\begin{document}

\newlength\nodewidth
\setlength\nodewidth{40mm}

\tikzset{%
    fill1/.style={fill=red!30,outer sep=0pt},
    fill2/.style={fill=green!30,outer sep=0pt},
    split/.style={%
        minimum width=0.5/3*\nodewidth,
        minimum height=5mm,
        %inner sep=0pt,
        outer sep=0pt,
        on chain},
    split1/.style={split,fill1},
    split2/.style={split,fill2},
}

\begin{tikzpicture}[%
    start chain,
    node distance=0pt]

    \node [fill1,minimum width=\nodewidth] (b1) {Bank 1 1024 MiB};
    \node [fill2,minimum width=\nodewidth,right=of b1] (b2) {Bank 2 1024 MiB};

    \node [split1,anchor=north west] at (b1.south west) {};
    \node [split2] {};
    \foreach \n in {0,1,...,4} {%
        \node [split1] {};
        \node [split2] {};
    };

\end{tikzpicture}

\end{document}

答案2

您可以使用 TikZ \scope 指令将您的图片本地化,然后使用移位和比例作为 \scope 的选项将整个组放置在您想要的位置。

相关内容