通过使图片的其余部分透明来突出显示图片中的某些区域

通过使图片的其余部分透明来突出显示图片中的某些区域

在我的beamer文档中,我正在按照描述绘制图片这个问题。我试图通过使图片的其余部分“淡出”来突出显示图片的特定区域,如下所示:

在此处输入图片描述

在我目前的实现中,我认为通过在整个图片周围绘制一个矩形区域,然后在同一路径中绘制一些矩形,然后用不透明度为 0.9 的白色填充它,我得到了所需的效果。但效果并不好,因为出于某种原因,我不明白矩形外的区域被“填充”,而圆外的区域没有。我想我不应该填充未封闭的路径。无论如何我都在尝试,这可能意味着它不太稳定。

这是我目前的尝试:

\documentclass[12pt]{beamer}
\usepackage{tikz}
\begin{document}

\begin{frame}

\begin{tikzpicture}
    \node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=8cm]{BlueMarble}};
     \begin{scope}[x={(image.south east)},y={(image.north west)}]
      \path<2->[fill=white,opacity=.9,draw=black] (0,0) -- (1,0) -- (1,1) -- (0,1) -- cycle 
                (0.1,0.5) rectangle (0.3,0.6)
                (0.5,0.4) rectangle (0.6,0.5)
                (0.75, 0.55) circle [radius=0.1];
%                (0.15,0.5) -- (0.15,0.6) -- (0.25,0.6) -- (0.15,0.6) -- cycle;
\draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1);
\foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; }
\foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y}; }
    \end{scope}
\end{tikzpicture}
\end{frame}

\end{document}

实现这种效果的更好方法是什么?理想情况下,我想先使整个图像透明 90%,然后定义一些只有 10% 透明的区域。但是透明度加起来,所以它不起作用。或者它起作用,只是方式不同?

答案1

如果我理解正确的话,问题在于您无法从透明覆盖层中“剪切”任意形状(例如圆形)。如果是这样,您的代码没有问题,您只需要在启动绘图环境时使用一个额外的选项:\begin{tikzpicture}[even odd rule]。就这样。:)

相关内容