tikz 中两条路径之间的淡入淡出

tikz 中两条路径之间的淡入淡出

我在 tikz 中有一个外部路径和一个内部路径。我想在它们之间创建一个淡入淡出,这样在外部路径上颜色完全是黑色,而在内部路径上完全是白色。我的问题是创建一个淡入淡出,它不会到达一个中间点,而是沿着两条路径相等。

这是我的代码的简约版本:

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

\begin{document}
\begin{tikzpicture}

\coordinate (A) at (1,-3);
\coordinate (B) at (7,-1);
\coordinate (C) at (9,-7);
\coordinate (D) at (3,-9);

\fill[even odd rule,inner color=white,outer color=black]
 %outer path
(A) arc (180:90:2) -- (B) arc (90:0:2) -- (C) arc (360:270:2) -- (D) arc (270:180:2) -- (A)
%inner path
($(A)+(1,0)$) arc (180:90:1) -- ($(B)+(0,-1)$) arc (90:0:1) -- 
($(C)+(-1,0)$) arc (360:270:1) -- ($(D)+(0,1)$) arc (270:180:1) -- ($(A)+(1,0)$);

\end{tikzpicture}
\end{document}

如果有人能帮助我,我会非常高兴:-)

答案1

它不会帮助您声明具有内部颜色、更远的白色的径向阴影。 - 由于您的区域不是环,因此看起来很奇怪:

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}
\pgfdeclareradialshading{ring}{\pgfpointorigin}{%
   rgb(0.8cm)=(1,1,1);
   rgb(1.4cm)=(0,0,0)}    
\begin{document}
\begin{tikzpicture}    
\coordinate (A) at (1,-3);
\coordinate (B) at (7,-1);
\coordinate (C) at (9,-7);
\coordinate (D) at (3,-9);    
\shade[shading=ring, even odd rule]
 %outer path
(A) arc (180:90:2) -- (B) arc (90:0:2) -- (C) arc (360:270:2) -- (D) arc (270:180:2) -- (A)
%inner path
($(A)+(1,0)$) arc (180:90:1) -- ($(B)+(0,-1)$) arc (90:0:1) -- 
($(C)+(-1,0)$) arc (360:270:1) -- ($(D)+(0,1)$) arc (270:180:1) -- ($(A)+(1,0)$);    
\end{tikzpicture}
\end{document}

径向阴影圆角正方形

一种选择是声明一个功能性阴影,但用不同深浅的灰色绘制线条要简单得多。我观察到,您的形状只是一个圆角正方形,然后使用它代替原始路径。

\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\foreach \i in {0,1,...,100}
\draw[black!\i, rounded corners=(1cm+\i/100 cm] (2-\i/100,-8-\i/100) rectangle (8+\i/100,-2+\i/100);
\end{tikzpicture}
\end{document}

带阴影的圆角正方形

相关内容