![在图形上覆盖一个半透明的矩形](https://linux22.com/image/393927/%E5%9C%A8%E5%9B%BE%E5%BD%A2%E4%B8%8A%E8%A6%86%E7%9B%96%E4%B8%80%E4%B8%AA%E5%8D%8A%E9%80%8F%E6%98%8E%E7%9A%84%E7%9F%A9%E5%BD%A2.png)
我知道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}