这个想法是制作一个正方形,并在角落处放置 4 个圆圈,但我不知道如何使填充覆盖整个圆圈区域直至正方形的边界
MWE 是
\documentclass[]{beamer}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[fill=gray,thick](0,0) rectangle (4,4);
\draw (4,1)[fill=white,thick] arc (90:180:1);
\draw (1,0)[fill=white,thick] arc (0:90:1);
\draw (3,4)[fill=white,thick] arc (180:270:1);
\draw (1,4)[fill=white,thick] arc (360:270:1);
\end{tikzpicture}
\hspace{2cm}
\begin{tikzpicture}
\draw[even odd rule,fill=gray,thick](0,0) rectangle (4,4) (2,2) circle (2cm);
\end{tikzpicture}
\end{document}
答案1
我不确定你喜欢用灰色填充图片的哪个区域。像下面的图片一样?请指教!
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\begin{center}
\begin{tikzpicture}
\draw[fill=gray](0,0) rectangle (4,4);
\draw[fill=white]
(4,1) arc (90:180:1) --
(1,0) arc (0:90:1) --
(0,3) arc (270:360:1) --
(3,4) arc (180:270:1) -- cycle
;
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
或者你喜欢像这样有以下的反向着色?
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\begin{center}
\begin{tikzpicture}
\draw (0,0) rectangle (4,4);
\draw[fill=gray!30]
(4,1) arc (90:180:1) --
(1,0) arc (0:90:1) --
(0,3) arc (270:360:1) --
(3,4) arc (180:270:1) -- cycle
;
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
答案2
对于这种图形,还有两个选项。一个使用路径,clipping
而另一个将矩形绘制为节点,从而允许使用path picture
命令的自动裁剪属性。
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[clip](0,0) rectangle (4,4);
\filldraw[fill=gray] (0,0) circle (1cm);
\filldraw[fill=gray] (0,4) circle (1cm);
\filldraw[fill=gray] (4,0) circle (1cm);
\filldraw[fill=gray] (4,4) circle (1cm);
\end{tikzpicture}
%
\begin{tikzpicture}
\node[draw, minimum size=4cm, fill=gray,
path picture={\foreach \i in {north west, north east, south west, south east}
\filldraw[fill=white] (path picture bounding box.\i) circle (1cm);}]{};
\end{tikzpicture}
\end{document}
答案3
我知道你只是想要这个轮廓,所以让它笔直但可调整:
\documentclass[border=5pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\def\r{1.5} % Radius of corner circles
\def\l{5} % Square length
\draw[orange,ultra thin] (0,0) grid (\l,\l);
\draw[line width=3pt]
(\l,\r) arc (90:180:\r) --
(\r,0) arc (0:90:\r) --
(0,\l-\r) arc (270:360:\r) --
(\l-\r,\l) arc (180:270:\r) -- cycle
;
\end{tikzpicture}
\end{document}
如果您想同时使用\r
和\l
,您可以画出一些有趣的图形(特别是如果您选择的半径大于正方形长度的一半)。
(橙色网格仅用于查看尺寸)。
答案4
也许有人对具有可配置边数的解决方案感兴趣。
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
%% Pentagon -------------------
\coordinate (o1) at (0,0);
\def\radius{1} % Radius of corner circles
\def\side{3} % length of sides
\def\nSides{5} % number of sides of the polygon
\pgfmathsetmacro\nSidesMo{\nSides-1}
\pgfmathsetmacro\ang{360/\nSides}
\draw[fill=white] (o1) \foreach \x in {0,...,\nSidesMo}{-- ++(-\x*\ang*-1^\x:\side) } -- cycle;
\draw[fill=gray] (o1) ++(0:\radius) \foreach \x in {0,...,\nSidesMo}{ arc (\x*\ang*-1^\x:\x*\ang*-1^\x+ 180-\ang:\radius) -- ++(\x*\ang*-1^\x+180-\ang:\side-2*\radius)} ;
\end{tikzpicture}
\end{document}