为每一帧随机分配背景颜色

为每一帧随机分配背景颜色

如何为每个投影仪框架随机选择一个背景颜色?

笔记:

这个问题是为了完善问题每次翻页时随机为 PDF 中的背景分配颜色要求提供一种解决方案,在pdf显示时改变颜色。相比之下,本问题涉及在编译期间随机分配颜色。

答案1

这是在 ConTeXt 中执行此操作的一种方法。要设置页面的颜色,我们需要:

\definebackgrounds[page][background=color, backgroundcolor=...name...]

在每一页上,都会重新评估setups指定的definebackgrounds值。因此,要更改每页的颜色,我们可以简单地将背景颜色的值更改为随机颜色。在 Lua 中这样做更容易。因此,这是一个完整的示例:

\startluacode
  local random = math.random
  local format = string.format
  commands.change_color = function()
    options = { format("r=%0.3f, g=%0.3f, b=%0.3f", random(), random(), random()) }
    context.definecolor( {"randomcolor"}, options)
  end
\stopluacode

\startsetups change:color
  \ctxcommand{change_color()}
\stopsetups

\setupbackgrounds
   [page]
   [
     background=color,
     setups=change:color, 
     backgroundcolor=randomcolor,
   ]


% Just to visualize the result
\setuppapersize[A6][A2,landscape]
\setuppaper[nx=5,ny=3]
\setuparranging[XY]


\starttext

\dorecurse{15}{\null\page}

\stoptext

这使 在此处输入图片描述

答案2

\documentclass{beamer}

\usepackage{pgf}
\usepackage{pgffor}

\pgfmathsetseed{\number\pdfrandomseed} % seed for random generator

\setbeamertemplate{background canvas}{%
    \pgfmathsetmacro{\R}{random(0,10000)/10000}%
    \pgfmathsetmacro{\G}{random(0,10000)/10000}%
    \pgfmathsetmacro{\B}{random(0,10000)/10000}%
    \definecolor{bgcolor}{rgb}{\R,\G,\B}%
    \color{bgcolor!40}\rule{\paperwidth}{\paperheight}
}

\begin{document}

    \foreach \n in {1,...,100}{
        \begin{frame}
            test
        \end{frame}
    }

\end{document}

在此处输入图片描述

相关内容