填充两个圆圈之间的区域

填充两个圆圈之间的区域

如何仅使用 tikz(最好不使用 pgfplots)填充两个同心圆之间的区域(甚至略微偏心)?我发现了许多类似的问题,但没有一个能完全解决这个问题。

\documentclass[tikz,border=1pt]{standalone}

\begin{document}
\begin{tikzpicture}
    \draw (0, 0) circle (1);
    \draw (0, 0) circle (1.2);
\end{tikzpicture}
\end{document}

我想用灰色填充这两个区域。我更喜欢不是用白色填充内圈,但保持内圈透明或未填充。

答案1

您可以使用even odd rule进行填充。红线只是为了显示内圈是透明的。

\documentclass[tikz,border=1pt]{standalone}
\begin{document}
\begin{tikzpicture}
  \draw[red,thick] (-1.2,-1.2) -- (1.2,1.2);
  \fill[gray!40,even odd rule] (0,0) circle (1.2) (0,0) circle (1);
  \draw (0, 0) circle (1);
  \draw (0, 0) circle (1.2);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

我忍不住要展示一下它是多么简单pstricks

\documentclass[border = 5ptt, svgnames]{standalone}
\usepackage{pstricks}
\usepackage{auto-pst-pdf}% to compile with pdflatex --enable-write18 (MiKTeX) or pdflatex --shell-escape (TeXLive, MacTeX)

 \begin{document}

\begin{pspicture}
\psRing[linewidth=0.6pt, linecolor=Salmon, fillstyle=solid, fillcolor=WhiteSmoke](0,0){1}{1.2}
\end{pspicture}

\end{document} 

在此处输入图片描述

答案3

不确定您想用这个形状做什么,但如果它符合您的需要,您也可以使用doubleTikz 提供的线条。

我还使用了一条红线来表示中间仍然为空。

输出(稍微放大)

在此处输入图片描述

代码

\documentclass[margin=5mm]{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}

\draw[red] (-1.2,-1.2) -- (1.2,1.2);

\draw[double=gray, double distance=2mm] (0,0) circle (1);

\end{tikzpicture}
\end{document}

答案4

使用 MetaPost 可以做到这一点,这可能对用户有用,tikz因为 MetaPost 启发了tikz一些概念(例如,路径):使用运算符将​​一个圆连接到另一个圆(反转)--(与 中的语法相同tikz),然后关闭生成的环(-- cycle指令)。

这样,这个环就可以被填充,而无需取消填充内圆(即,不用背景颜色填充,在本例中为白色)。

为了方便起见,我已将 MetaPost 代码包含到 LuaLaTeX 程序中。

\documentclass[border=3mm]{standalone}
\usepackage{luatex85, luamplib}
\begin{document}
\begin{mplibcode}
path circle[], ring;
circle1 = fullcircle scaled 4cm;
circle2 = fullcircle scaled 3cm;
ring = circle1 -- reverse circle2 -- cycle;
beginfig(1);
    fill ring withcolor .7white;
    draw circle1; draw circle2;
endfig;
\end{mplibcode}
\end{document}

在此处输入图片描述

相关内容