我有以下问题:我想画一个矩形,在它周围,背景应该平滑地褪色(白色)。我发现 tikz 的着色技术非常有趣。问题是,它的表现并不像我所怀疑的那样。请参见以下示例:
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{scopes,fadings}
\begin{document}
\begin{tikzpicture}
\shade [top color=white,bottom color=red,shading angle=90] (-1,-1) rectangle (1,1);
\filldraw [color=red,xshift=2cm] (-1,-1) rectangle (1,1);
\shade [top color=red,bottom color=white,shading angle=90,xshift=4cm] (-1,-1) rectangle (1,1);
{ [ xshift=10cm,rotate=-30]
\shade [top color=white,bottom color=red,shading angle=60] (-1,-1) rectangle (1,5);
\filldraw [color=red,xshift=2cm] (-1,-1) rectangle (1,5);
\shade [top color=red,bottom color=white,shading angle=60,xshift=4cm] (-1,-1) rectangle (1,5);
}
\end{tikzpicture}
\end{document}
我使用 pdflatex 得到了两个块。左边的绘制正确,但(显然)没有旋转。在右图中,淡入淡出末端的颜色设置不正确:我可以看到白色背景和几乎白色的左上端之间的差异。此外,在中间与红色方块连接处的颜色也不正确。
你能告诉我我做错了什么吗?
答案1
问题是图形首先被旋转,然后才应用阴影;为了获得所需的效果,您可以应用画布变换(参见22.4 画布变换pgf 手册):
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{scopes,fadings}
\begin{document}
\begin{tikzpicture}[transform canvas={rotate=-30}]
\shade [top color=white,bottom color=red,shading angle=60] (-1,-1) rectangle (1,5);
\filldraw [color=red,xshift=2cm] (-1,-1) rectangle (1,5);
\shade [top color=red,bottom color=white,shading angle=60,xshift=4cm] (-1,-1) rectangle (1,5);
\end{tikzpicture}
\end{document}