使用 TikZ 渲染混合组的问题

使用 TikZ 渲染混合组的问题

我在使用 TikZ 混合颜色时遇到了麻烦。下面的 MWE 无法在我的系统中渲染混合。我在 Windows XP 上使用 MiKTeX 2.9,并从 CTAN 下载并安装了最新版本的 TikZ/PGF。我不知道这是否来自我的 PDF 查看器,因为 Sumatra 甚至没有显示第一个混合组,而 Adob​​e Reader 确实渲染了所有组,但不正确。有什么提示吗?

代码相当蹩脚,只是为了使其尽可能直接,并避免因扩展、群组或类似情况而出现任何问题。

编辑:我的代码一定有问题,因为使用 Adob​​e Reader 作为 PDF 查看器时,pstricks 和 TikZ 中的混合/透明样式正确呈现。

\documentclass[11pt]{article}

\usepackage{tikz}

\pagestyle{empty}

\begin{document}

\begin{tikzpicture}[
  %remember picture,
  %overlay,
]
 \begin{scope}[blend group=lighten]
   \fill[green] (90:1) circle[radius=1.5];
   \fill[blue] (180:1) circle[radius=1.5];
   \fill[red] (0:1) circle[radius=1.5];
 \end{scope}
 \begin{scope}[xshift=6cm,blend group=darken]
   \fill[green] (90:1) circle[radius=1.5];
   \fill[blue] (180:1) circle[radius=1.5];
   \fill[red] (0:1) circle[radius=1.5];
 \end{scope}
 \begin{scope}[xshift=12cm,blend group=multiply]
   \fill[green] (90:1) circle[radius=1.5];
   \fill[blue] (180:1) circle[radius=1.5];
   \fill[red] (0:1) circle[radius=1.5];
 \end{scope}
 \begin{scope}[yshift=-4cm,blend group=screen]
   \fill[green] (90:1) circle[radius=1.5];
   \fill[blue] (180:1) circle[radius=1.5];
   \fill[red] (0:1) circle[radius=1.5];
 \end{scope}
 \begin{scope}[yshift=-8cm,blend group=overlay]
   \fill[green] (90:1) circle[radius=1.5];
   \fill[blue] (180:1) circle[radius=1.5];
   \fill[red] (0:1) circle[radius=1.5];
 \end{scope}
\end{tikzpicture}
\end{document} 

PNG obtained from the PDF file through ImageMagick

答案1

这是预期的输出。例如,将深色中的蓝色改为橙色,你会看到它成倍增加。在这里,你使用的是 RGB 中的正交颜色,没有不透明度或透明度。因此,你正在烧毁颜色(它们变得饱和)。要考虑的类比是

(1,0,0) + (0,1,0) + (0,0,1) = (1,1,1)
  red      green      blue  =  white or black or something else depending on the blend mode

或者,添加every path/.append style={fill opacity=0.75},它应该再次显示有意义的结果。

请注意,这些是 PDF 规范的前沿功能,并不是每个查看者都以相同的方式做出反应。而且有些打印机可能不喜欢这些。

相关内容