我可以给前两个四分之一圆上色,但是无法给最后两个圆上色:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=1.5]
\draw[fill=red!80] (0,0) -- +(0:1) arc (0:90:1);
\draw[fill=red!80] (0,2) -- +(0:1) arc (0:-90:1);
\draw[ultra thick]
(0,0) -- (2,0);
\draw[ultra thick]
(2,0)--(2,2);
\draw[ultra thick]
(2,2)--(0,2);
\draw[ultra thick]
(0,2)--(0,0);
\draw[ultra thick]
(1,0) arc (0:90:1);
\draw[ultra thick]
(1,0) arc (180:90:1);
\draw[ultra thick]
(0,1) arc (-90:0:1);
\draw[ultra thick]
(1,2) arc (180:270:1);
\end{tikzpicture}
\end{center}
\end{document}
答案1
还有另一个选择:使用\clip
。基本上,您绘制完整的圆圈,但删除剪切路径外的部分。
\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\def\rcirc{2} % radius
\def\dcirc{2*\rcirc} % diameter
\clip [draw] (0,0) rectangle ++(\dcirc,\dcirc); % clipping path
\foreach \x/\y in {0/0,0/\dcirc,\dcirc/0,\dcirc/\dcirc} {
\filldraw [fill=red] (\x,\y) circle (\rcirc);
}
\end{tikzpicture}
\end{document}
以下是未经剪切时图片的实际样子(剪切路径是虚线):
答案2
代码高尔夫?(由 Heiko 的控制序列替换提供支持!)
\documentclass[tikz]{standalone}
\begin{document}
\tikz{\foreach~in{4,1,2,3}\draw[rotate=90*~,fill=red!80,thick](1,0)|-(0,1)arc(0:90:-1);}
\end{document}
答案3
简短版本中,您用“白色”填充红色矩形:
\documentclass[tikz,border=7mm]{standalone}
\begin{document}
\begin{tikzpicture}[scale=1.5, ultra thick]
\draw[fill=red!80] (0,0) rectangle +(2,2);
\draw[fill=white] (1,0) arc (0:90:1) arc (-90:0:1) arc (-180:-90:1) arc (90:180:1);
\end{tikzpicture}
\end{document}
编辑:因为我喜欢代码高尔夫,所以您可以将这 4 行替换为一行:
\tikz\draw[thick,bend left=45,fill=red!80]rectangle(2,2)(0,1)to(1,0)to(2,1)to(1,2)to(0,1);
答案4
更新
正如宣布的那样,一行代码仅需一行\filldraw
:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=1.5]
\filldraw[fill=red,ultra thick] (0,0) -- +(0:1) arc (0:90:1) arc (-90:0:1) arc (-180:-90:1) arc (-270:-180:1) -- (2,0) -- (2,2) -- (0,2) -- cycle;
\end{tikzpicture}
\end{center}
\end{document}
初始版本
我首先给出了这个我喜欢的解决方案,因为它允许使用已知的解决方案通过移动和缩放部分解决方案的副本来完成问题;然而,结果存在一些缺陷(仔细观察(1,0)
和(1,2)
)。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=1.5]
\filldraw[fill=red!80,ultra thick]
(0,0) -- +(0:1) arc (0:90:1) -- (0,2) -- +(0:1) arc (0:-90:1) -- cycle;
\begin{scope}[xshift=2cm,xscale=-1]
\filldraw[fill=red!80,ultra thick]
(0,0) -- +(0:1) arc (0:90:1) -- (0,2) -- +(0:1) arc (0:-90:1) -- cycle;
\end{scope}
\end{tikzpicture}
\end{center}
\end{document}