我在 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}