我正在尝试绘制两个矩形(使用\fill
和一个循环),其中只有北/南角是圆角。我希望下面的蓝色矩形仅在顶部有圆角,我希望底部的红色矩形仅在底部有圆角。
代码:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[h]
\centering
\begin{tikzpicture}
\fill [blue,rounded corners=10, draw]
(0,0) --
++(5,0) --
++(0,5) --
++(-5,0) --
cycle
{};
\fill [red,rounded corners=10, draw]
(0,0) --
++(5,0) --
++(0,-5) --
++(-5,0) --
cycle
{};
\end{tikzpicture}
\end{figure}
\end{document}
有人可以帮我弄这个吗?
这些问题可能暗示了解决方案,但我无法让它与\fill
或一起工作\draw
:
TikZ 节点仅一侧有圆角
在 TikZ 中绘制一个带圆角的矩形
具有不同圆角的TikZ矩形节点
答案1
谢谢你的建议!我喜欢答案中提出的方法Torbjørn T.与最多链接,所以我自己在这里回答。
代码:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[h]
\centering
\begin{tikzpicture}
\fill [blue,draw]
(0,0) --
++(5,0) {[rounded corners=10] --
++(0,5) --
++(-5,0)} --
cycle
{};
\fill [red,draw]
(0,0) --
++(5,0) {[rounded corners=10] --
++(0,-5) --
++(-5,0)} --
cycle
{};
\end{tikzpicture}
\end{figure}
\end{document}
答案2
一个盒子和一个path picture
:
\documentclass[tikz,border=5]{standalone}
\tikzset{bicolor/.style args={#1 and #2}{
path picture={
\tikzset{rounded corners=0}
\fill [#1] (path picture bounding box.west)
rectangle (path picture bounding box.north east);
\fill [#2] (path picture bounding box.west)
rectangle (path picture bounding box.south east);
}}}
\begin{document}
\begin{tikzpicture}
\path [bicolor={blue and red}, rounded corners=2ex]
(0,0) rectangle (2,4);
\end{tikzpicture}
\end{document}
答案3
\documentclass{article}
\usepackage[most]{tcolorbox}
\begin{document}
\begin{figure}[h]
\centering
\begingroup % for `\offinterlineskip`
\offinterlineskip
\tcbset{arc=0.5cm,auto outer arc}
\begin{tcolorbox}[nobeforeafter,after=\par\nointerlineskip,sharp corners=south,height=4cm,colback=blue,boxrule=0pt,width=4cm]
\end{tcolorbox}
\begin{tcolorbox}[nobeforeafter,after=\par\nointerlineskip,sharp corners=north,height=4cm,colback=red,boxrule=0pt,width=4cm]
\end{tcolorbox}
\endgroup
\end{figure}
\end{document}
答案4
另一种解决方案。同一个矩形被绘制两次,但第二次用另一种颜色填充并裁剪以仅显示一半。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}[h]
\centering
\begin{tikzpicture}
\fill [blue,rounded corners=10, draw]
(0,0) rectangle (5,10);
\begin{scope}
\clip (0,0) rectangle (5,5);
\fill [red,rounded corners=10, draw]
(0,0) rectangle (5,10);
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}