这里肯定有我遗漏的东西,但我希望定义一个褪色的绘图并将其放置在图片的各个点。我可以让它看起来像我想要的那样,但当我将它放置在\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
。也就是说,它现在记住了你在哪里。