是否可以在 TikZ 中对折线的一侧应用阴影效果?我有以下简单代码
\begin{tikzpicture}
\draw (1.06,9.56) -- (1.44,9.78) -- (1.78,9.56) -- (2.14,9.79) -- (2.48,9.29)
-- (2.83,9.79) -- (3.17,9.54) -- (3.54,9.76) -- (3.87,9.56);
\draw (1.06,8.94) -- (1.44,8.72) -- (1.78,8.93) -- (2.14,8.71) -- (2.48,9.21)
-- (2.83,8.72) -- (3.17,8.96) -- (3.54,8.74) -- (3.87,8.94);
\end{tikzpicture}
我希望在上面的线上方和下面线下方有一些阴影,因为这些线代表空气-固体边界,我需要以图形方式传达这一点。
答案1
我认为fill
或需要一条向上到某个点和向下到某个点的shade
封闭路径,因此您可以创建一个。下面我使用宏来定义和,以便我们可以使用它两次:一次用于绘制线,然后用于指定封闭区域。\MaxY
\MinY
\TopPath
\BottomPath
\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\begin{document}
\newcommand*{\MaxX}{3.87}%
\newcommand*{\MinX}{1.06}%
\newcommand*{\MaxY}{10.0}%
\newcommand*{\MinY}{8.50}%
\newcommand*{\TopPath}{(\MinX,9.56) -- (1.44,9.78) -- (1.78,9.56) -- (2.14,9.79) -- (2.48,9.29) -- (2.83,9.79) -- (3.17,9.54) -- (3.54,9.76) -- (\MaxX,9.56)}%
\newcommand*{\BottomPath}{(\MinX,8.94) -- (1.44,8.72) -- (1.78,8.93) -- (2.14,8.71) -- (2.48,9.21) -- (2.83,8.72) -- (3.17,8.96) -- (3.54,8.74) -- (\MaxX,8.94)}%
\begin{tikzpicture}
\shade [top color= white, bottom color=brown] \TopPath
-- (\MaxX,\MaxY) -- (\MinX,\MaxY) -- cycle;
\draw [thick] \TopPath;
\shade [top color= blue, bottom color=white] \BottomPath
-- (\MaxX,\MinY) -- (\MinX,\MinY) -- cycle;
\draw [thick] \BottomPath;
\end{tikzpicture}
\end{document}
答案2
我知道答案已经被接受了,但是我仍然会给出我的答案。
此答案使用剪辑来删除绘制的边界部分(外部部分)。使用此方法,只需输入和使用一次路径。
以下是代码
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\begin{scope} %only to make sure the clip doesn't act on anything else
\clip ($(0,0)+2*(\pgflinewidth,\pgflinewidth)$) rectangle ($(5,3)-2*(\pgflinewidth,\pgflinewidth)$);
\draw[ultra thick,bottom color=gray,top color = white] (0,2.5) -- (1,2.7) -- (2,2.4) -- (3,2.6) -- (4,2.5) -- (5,2.6) -- (5,3) -- (0,3) -- cycle;
\draw[ultra thick,bottom color=white,top color = gray] (0,0.5) -- (1,0.6) -- (2,0.4) -- (3,0.6) -- (4,0.5) -- (5,0.4) -- (5,0) -- (0,0) -- cycle;
\end{scope}
\end{tikzpicture}
\end{document}
结果是