如何仅使用 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
不确定您想用这个形状做什么,但如果它符合您的需要,您也可以使用double
Tikz 提供的线条。
我还使用了一条红线来表示中间仍然为空。
输出(稍微放大)
代码
\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}