如何在旋转图片时使用 TikZ 中的阴影?

如何在旋转图片时使用 TikZ 中的阴影?

我有以下问题:我想画一个矩形,在它周围,背景应该平滑地褪色(白色)。我发现 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}

在此处输入图片描述

相关内容