TikZ 淡入淡出不会随范围移动

TikZ 淡入淡出不会随范围移动

这里肯定有我遗漏的东西,但我希望定义一个褪色的绘图并将其放置在图片的各个点。我可以让它看起来像我想要的那样,但当我将它放置在\begin{scope}[xshift=\x,yshift=\y]环境中时,褪色不会随着范围内的其余部分而移动。

这是一个简单的例子:

\documentclass{article}
\usepackage{tikz}
\usepackage{ifthen}
\usetikzlibrary{calc,decorations.pathmorphing,shapes}
\pgfdeclareradialshading{flameshade}{\pgfpointorigin}{color(0mm)=(pgftransparent!0);color(3mm)=(pgftransparent!40);color(8mm)=(pgftransparent!70);color(2cm)=(pgftransparent!100)}
\pgfdeclarefading{fadeflame}{\pgfuseshading{flameshade}}

\def\flame{
    \pgfsetfading{fadeflame}{\pgftransformshift{\pgfpoint{0}{-4.5}}\pgftransformxscale{0.05}\pgftransformyscale{0.08}}%
    \path(0,0) pic{flame};
}
    \tikzset{%
  flame/.pic={
    code={
        \tikzset{scale=1/10}
        \node[circle,minimum height=4, minimum width=4, fill=\fillcolour,inner sep=0,outer sep=0] at(0,-1){};

  }}}

\begin{document}

\begin{tikzpicture}
\fill[black] (-4,-3) rectangle (6,4);

\node[circle,inner sep=0, outer sep=0, draw=white,very thin] at (0,0){};

\begin{scope}[xshift=0cm, yshift=-0cm]
    \def\fillcolour{yellow}
    \flame
\end{scope}

\begin{scope}[xshift=.1cm, yshift=-0.1cm]
    \def\fillcolour{cyan}
    \flame
\end{scope}
\end{tikzpicture}
\end{document}

上述代码的结果,被大量裁剪

白色圆圈只是表示原点。黄色阴影圆圈看起来正确;当我移动它时,褪色仍然存在(如从青色阴影圆圈看到的那样)。

答案1

您可以重新定义\frame如下

\def\flame{
    \pgfgettransform{\mycurrenttransform}
    \pgfsetfading{fadeflame}{
        \pgfsettransform{\mycurrenttransform}
        \pgftransformshift{\pgfpoint{0}{-4.5}}\pgftransformxscale{0.05}\pgftransformyscale{0.08}}%
    \path(0,0) pic{flame};
}

这里,\pgfgettransform将把当前变换存储在 中,\mycurrenttransform并将\pgfsettransform在 中恢复它\pgfsetfading。也就是说,它现在记住了你在哪里。

相关内容