在 Tikz 中绘制阴影轮

在 Tikz 中绘制阴影轮

我想用 Tikz 画一个阴影轮子

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings}
\begin{document}
   \begin{tikzpicture}
       \shade[outer color=gray,middle color=gray!10,inner color=gray] [even odd rule] (0,0) circle (1.5) (0,0) circle (1);
   \end{tikzpicture}
\end{document}

在此处输入图片描述

不起作用middle color

答案1

为了获得精确的径向阴影,您必须考虑以下摘录和 pgfmanual (v3.0.1a) 第 1086 页中的图片:

阴影被缩放和平移,使得阴影中间的点 (50bp, 50bp) 位于路径的中间,而点 (25bp, 25bp) 位于路径的左下角,(75bp, 75bp) 位于路径的右上角。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings}

\pgfdeclareradialshading{gray ring}{\pgfpoint{0cm}{0cm}}%
{
  color(0bp)=(gray);
  color(16.66666bp)=(gray); % = 1/1.5 * 25bp
  color(20.83333bp)=(gray!10); % = 1.25/1.5 * 25bp
  color(25bp)=(gray);
  color(50bp)=(gray)
}

\begin{document}
\begin{tikzpicture}
  \shade[even odd rule,shading=gray ring]
  (0,0) circle (1.5) circle(1);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

您可以定义一个新的阴影,例如\pgfdeclareradialshading{ring},如下所示:

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

\pgfdeclareradialshading{ring}{\pgfpoint{0cm}{0cm}}%
{rgb(0cm)=(1,1,1);
rgb(.6666cm)=(.6,.5,.5);
rgb(1cm)=(1,1,1)}

\begin{document}
   \begin{tikzpicture}
      \draw[shading=ring, even odd rule] (0,0) circle (1.5) circle (1);
   \end{tikzpicture}
\end{document}

\end{document}

在此处输入图片描述

答案3

只需为内圆添加一个绘制命令:

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings}
\begin{document}
   \begin{tikzpicture}
       \shade[outer color=gray,middle color=red,inner color=gray] [even odd rule] (0,0) circle (1.5) (0,0) circle (1);
       \draw[fill=blue!50, radius=1.5,draw=gray] (0,0) circle (1);
   \end{tikzpicture}
\end{document}

我已添加draw=gray,以便内圆边框的颜色与阴影区域相匹配。

在此处输入图片描述

编辑

我怀疑这不是你想要的,但是middle colorinner color=graythar 覆盖了。你需要把它放在middle color最后才能让它工作。代码:

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shadings}
\begin{document}
   \begin{tikzpicture}
       \shade[outer color=gray,inner color=gray, middle color=gray!10, even odd rule](0,0) circle (1.5) circle (1.25);
   \end{tikzpicture}
\end{document}

生产

在此处输入图片描述

我认为您需要 AboAmmar 的方法!

相关内容