我正在尝试覆盖图片内的颜色键,但不是在封闭范围内(即路径/绘制/填充指令)。
我的目标是能够设置路径的颜色,并让其影响图片。也就是说,图片可能具有自定义阴影,我希望此阴影采用路径颜色作为色调。但是,仍然应该允许覆盖图片的局部颜色。
该示例展示了我认为应该如何根据文档进行编码,但过滤器并没有像我预期的那样工作。在示例中,我创建了一个本地名称空间,/tikz/example
因为最初的“颜色”样式破坏了/tikz/color
键。过滤也需要一个与之配合的系列。
我对过滤的理解是,在这种情况下,应该创建/注册过滤器tikz/example
,然后在必要时激活它,即pic actions
执行之前和之后。
我希望看到的输出是带有蓝线的白色背景块,上面覆盖着三个较小的块,每个块分别用蓝色、红色和绿色阴影表示。
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\tikzset{
basis/.initial=1em,
block/.is family,
/tikz/pic actions/.install key filter=block,
block/.pic={
\draw[block/.activate family, pic actions, block/.deactivate family]
let \n{basis}={\pgfkeysvalueof{/tikz/basis}} in
(-\n{basis},-\n{basis}) rectangle (\n{basis},\n{basis});
},
block/.cd,
colour/.style={/tikz/top color =#1!50!white,
/tikz/bottom color=#1!50!black},
}
\begin{document}
\begin{tikzpicture}
\draw[color=blue]
( 0, 0) pic {block}
(-1,-1) pic[color=green] {block}
rectangle
(1,1) pic[color=red] {block};
\end{tikzpicture}
\end{document}
答案1
抱歉,但我不明白为什么你需要所有这些“块系列”。图片中包含pic actions
当前颜色设置,默认情况下是路径的颜色设置,但你可以在图片样式中覆盖它们。
\documentclass[tikz]{standalone}
\usetikzlibrary{calc}
\tikzset{
basis/.initial=1em,
block/.pic={
\draw[pic actions]
let \n{basis}={\pgfkeysvalueof{/tikz/basis}} in
(-\n{basis},-\n{basis}) rectangle (\n{basis},\n{basis});
},
colour/.style={top color =#1!50!white,
bottom color=#1!50!black},
}
\begin{document}
\begin{tikzpicture}
\draw[blue]
( 0, 0) pic {block}
(-1,-1) pic[colour=green, draw=red] {block}
rectangle
(1,1) pic[colour=red] {block};
\end{tikzpicture}
\end{document}