如何使用 Tikz 计算并使用文本的连续颜色值?

如何使用 Tikz 计算并使用文本的连续颜色值?

我想使用 Tikz 算法生成一些具有基于计算的颜色值的文本。例如:

  \documentclass{standalone}
  \usepackage{tikz}
  \begin{document}
  \begin{tikzpicture}
      \foreach \i in {0, 1, ..., 10} {
          \draw (\i, 0) node {\textcolor[gray]{0.5}A};
      }
  \end{tikzpicture}
  \end{document}

以灰色显示一行“A”:

在此处输入图片描述

我该如何计算0.5值,例如,以不同灰度显示这组“A”,例如从黑色到白色的渐变?我可以使用相同的方法计算任意 RGB 值吗?

答案1

是的,您可以改变灰度级别,并且以下内容也可以用于一般的非灰色。

\documentclass{standalone}
  \usepackage{tikz}
  \begin{document}
  \begin{tikzpicture}
      \foreach \i [evaluate=\i as \j using {int(\i*10)}] in {0, 1, ..., 10} {
          \draw (\i, 0) node[text=gray!\j!white] {A};
      }
  \end{tikzpicture}
  \end{document}

在此处输入图片描述

答案2

只是为了好玩,另一种foreach解决方案:

\documentclass{standalone}
  \usepackage{tikz}
  \begin{document}
  \begin{tikzpicture}
      \foreach \i [count=\j] in {0, 10, ..., 100} {
          \draw (\j, 0) node[text=blue!\i!red] {A};
      }
  \end{tikzpicture}
  \end{document}

在此处输入图片描述

答案3

您可以在 foreach 循环本身内评估变量(参见 3.0.1a 手册第 904 页)

在这里,由于您想从黑色变为白色,您可以执行以下操作:

结果

\documentclass{standalone}
  \usepackage{tikz}
  \begin{document}
  \begin{tikzpicture}
      \foreach \i [evaluate=\i as \gradient using 100-\i*10] in {0, 1, ..., 10} {
          \draw (\i, 0) node[text=black!\gradient] {A};
      }
  \end{tikzpicture}
  \end{document}

答案4

与 marmot 提出的语法略有不同,但效果相同

\documentclass[tikz,border=3.14pt]{standalone}
  \begin{document}
    \begin{tikzpicture}
      \draw foreach \i [evaluate=\i as \j using {int(\i*10)}] in {0, 1, ..., 10} {
          (\i, 0) node[text=gray!\j!white] {A}
      };
  \end{tikzpicture}
  \end{document}

相关内容