我尝试叠加两个矩形,一个是蓝色,一个是红色,并且交叉区域是蓝色和红色的混合色。但是边框有问题。
我没有正确获取矩形相交处的边框厚度
当使用圆角时,我不知道如何很好地使 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}