更改使用输入导入的整个 tikz 图片的颜色

更改使用输入导入的整个 tikz 图片的颜色

我有一张小图像,想在另一张 tikz 图片中重复使用。

假设文件 img.tex 包含:

\begin{tikzpicture}
    \draw (0,0) circle (1);
\end{tikzpicture} 

我希望它出现在另一张图片的几个地方

\newcommand\mycuteimage[1]{\scalebox{#1}{\input{img}}}

\begin{tikzpicture}
    \draw (0,0) grid (10, 1);
    \foreach \x in {2,5,9}
    {
        \node at (\x - 0.5, 0.5) {\mycuteimage{0.1}};
    }
\end{tikzpicture}

我可以以某种方式设置插入图像的颜色吗,比如说有时是红色,有时是蓝色?

例子:

\mycuteimage[blue]{0.1}

我试过用

{\color{blue} \mycuteimage{0.1}}

但它只会改变我没有指定颜色的线条的颜色,即,如果原始图像中的某些元素是红色的,它们将保持红色。

答案1

您的建议嵌套了tikzpictures,应该避免。TiZ 有pic用于此类目的的 s。

\documentclass[tikz,border=3.14mm]{standalone}
\begin{document}
\tikzset{pics/.cd,
my cute pic/.style={code={
    \draw (0,0) circle (1);
}}}

\begin{tikzpicture}
    \draw (0,0) grid (10, 1);
    \edef\LstColors{{"red","green","blue"}}
    \foreach \X [count=\Y starting from 0]in {2,5,9}
    {
        \pgfmathsetmacro{\mycolor}{\LstColors[\Y]}
        \pic at (\X - 0.5, 0.5) [scale=0.1,color=\mycolor]{my cute pic};
    }
\end{tikzpicture}
\end{document}

在此处输入图片描述

pics也接受参数。

相关内容