在图形上覆盖一个半透明的矩形

在图形上覆盖一个半透明的矩形

我知道overpic你可以把文字放在图片上面,正如本文所解释的那样问题。

我需要向图片添加文本,但需要将其放在白色半透明矩形的顶部,以便能够看到。下图从上面的链接中截取,解释了这个想法(将纯白色矩形视为半透明的,请原谅我的编辑技巧不佳)。

在此处输入图片描述

我尝试在透明彩色框内叠加文字

\begin{overpic}[width=\linewidth]{image.png}
    \put (0, 2.3){ %
        \hspace{-0.1pt}\hspace{-5pt}%
        \pgfsetfillopacity{0.5}%
        \colorbox{white}{%
            \parbox{\linewidth}{\pgfsetfillopacity{1}\hspace{25pt}\color{black} image text  \hspace{10pt}} }}
\end{overpic}       

但是文本周围的白色框超出了图像的边界,背景上只剩下白色矩形部分(我的背景是灰色)。这很奇怪,因为图像和颜色框都设置为linewidth,如果我将颜色框的宽度调小,它就会偏离中心(使用\centering不起作用)。 在此处输入图片描述

一定有办法在图像范围内放置一个半透明的矩形,但我不知道怎么做。感谢您提供的任何帮助!


梅威瑟:

\documentclass[10pt]{beamer}
\usetheme[progressbar=frametitle]{metropolis}
\usepackage[percent]{overpic}

\begin{document}
\begin{frame}
\hspace{-15pt}
\begin{minipage}{0.251\linewidth}
\vspace{10pt}
\begin{overpic}[width=\linewidth]{example-image-a}
    \put (0, 2.3){ %
        \hspace{-0.1pt}\hspace{-5pt}%
        \pgfsetfillopacity{0.5}%
        \colorbox{white}{%
            \parbox{\linewidth}{\pgfsetfillopacity{1}\hspace{25pt}\color{black} text \hspace{10pt}} }}

    \put (-1.95, 15.5){%
        \hspace{-0.1pt}\hspace{-2.2pt}%
        \pgfsetfillopacity{0.5}%
        \colorbox{white}{%
            \parbox{\linewidth}{\pgfsetfillopacity{1} \color{black}\hspace{1pt} image text } }}
\end{overpic}
\end{minipage}
\end{frame}

\end{document}

答案1

overpic似乎使用tikz,所以这里做广告tikz可能是合适的。如何在图片上添加内容的问题这个很好的答案,如果你想查看网格,这可能很有用。否则只需执行

\documentclass[10pt]{beamer}
\usetheme[progressbar=frametitle]{metropolis}
\usepackage{tikz}

\begin{document}
\begin{frame}
\hspace{-15pt}
\begin{minipage}{0.251\linewidth}
\vspace{10pt}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) 
{\includegraphics[width=\linewidth]{example-image-a}};
\node[fill=white,fill opacity=0.5,anchor=south,text width=\linewidth-2pt,
inner xsep=1pt,inner ysep=3pt,outer sep=0pt,align=center,text opacity=1] at (image.south){text\\ more text};
% from https://tex.stackexchange.com/a/9562/121799
%     \begin{scope}[x={(image.south east)},y={(image.north west)}]
%         \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{minipage}
\end{frame}
\end{document}

在此处输入图片描述

使文本更加清晰的另一种方法是使用contour包。

\documentclass[10pt]{beamer}
\usetheme[progressbar=frametitle]{metropolis}
\usepackage{tikz}
\usepackage{contour}
\contourlength{1pt}
\begin{document}
\begin{frame}
\hspace{-15pt}
\begin{minipage}{0.251\linewidth}
\vspace{10pt}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) 
{\includegraphics[width=\linewidth]{example-image-a}};
\node[%fill=white,fill opacity=0.5,
anchor=south,text width=\linewidth-2pt,
inner xsep=1pt,inner ysep=3pt,outer sep=0pt,align=center,text opacity=1] at 
(image.south){\contour{white}{text}\\ \contour{white}{more text}};
\end{tikzpicture}
\end{minipage}
\end{frame}
\end{document}

在此处输入图片描述

相关内容