如何控制相交节点(矩形)的边界

如何控制相交节点(矩形)的边界

我尝试叠加两个矩形,一个是蓝色,一个是红色,并且交叉区域是蓝色和红色的混合色。但是边框有问题。

  1. 我没有正确获取矩形相交处的边框厚度

  2. 当使用圆角时,我不知道如何很好地使 2 个角(西南角和东北角)变圆,而 2 个角不变圆。

任何想法?

相交矩形

这是我的 MWE:

\documentclass{article}
\usepackage{tikz}
\tikzset{
box1/.style={draw=black, thick, rectangle,rounded corners, minimum height=4cm, minimum width=4cm},
box2/.style={draw=black, thick, rectangle, minimum height=4cm, minimum width=4cm},
}

\begin{document}
\begin{tikzpicture}

\node[box1, fill=red!10] (c2) at (0,0) {};
\node[box1, fill=blue!10] (c1) at (2,2) {};
\begin{scope}
\clip (0,0) rectangle (4,4);
\clip (-2,-2) rectangle (2,2);
\fill[color=blue!50!red!10, rounded corners, draw=black, thick] (2,2) rectangle (0,0);
\end{scope}


\node[box2, fill=red!10] (c2) at (8,0) {};
\node[box2, fill=blue!10] (c1) at (10,2) {};
\begin{scope}
\clip (8,0) rectangle (12,4);
\clip (6,-2) rectangle (10,2);
\fill[color=blue!50!red!10, draw=black, thick] (10,2) rectangle (8,0);
\end{scope}

\end{tikzpicture}
\end{document}

答案1

问题在于\clip边框的一部分。请看下图。图 a 显示黑色边框,其中边框的路径显示为红色。如果沿着路径剪切,您将得到图 b,显示黑色边框的外半部分缺失/被剪切。

裁剪线宽

可能的解决方案

您可以使用透明度来叠加两种颜色,而不是剪切。只需将颜色设置为 100%,然后将不透明度设置为您想要的颜色值。10% 表示值为 0.1。在相交部分,颜色会自动混合,不需要剪切。我使用了fill opacity而不是opacity来仅影响填充而不影响边框 ( draw opacity)。

\documentclass{article}
\usepackage{tikz}
\tikzset{
    box1/.style={%
        draw=black, thick,
        rectangle,
        rounded corners,
        minimum height=4cm,
        minimum width=4cm
    },
}

\begin{document}
\begin{tikzpicture}
\node[box1, fill=red, fill opacity=0.1] (c2) at (0,0) {};
\node[box1, fill=blue, fill opacity=0.1] (c1) at (2,2) {};
\end{tikzpicture}
\end{document}

叠加颜色

答案2

Tobi 的回答展示了好的方法,但还有另一种没有rectangle和没有的方法clip

\documentclass{article}
\usepackage{tikz}
\tikzset{
box1/.style={draw=black, thick, rectangle,rounded corners, minimum height=4cm, minimum width=4cm},
box2/.style={draw=black, thick, rectangle, minimum height=4cm, minimum width=4cm},
}

\begin{document}
\begin{tikzpicture}

\node[box1, fill=red!20]  (c2) at (0,0) {};
\node[box1, fill=blue!20] (c1) at (2,2) {};

\fill[green,thick]  (0+0.5*\pgflinewidth,2cm-0.5*\pgflinewidth)
                   {[rounded corners=3pt+0.5\pgflinewidth] -- ++(2cm-\pgflinewidth,0)} 
                    -- ++(0,-2cm+\pgflinewidth) 
                   {[rounded corners=3pt+0.5\pgflinewidth] -- ++(-2cm+\pgflinewidth,0)} 
                    -- cycle;  
\draw[thick]  (0+0.5*\pgflinewidth,2cm)
                   {[rounded corners] -- ++(2cm-0.5\pgflinewidth,0)} 
                    -- ++(0,-2cm) ;  
\end{tikzpicture}  
\end{document} 

在此处输入图片描述

相关内容