如何在不使用附加包的情况下在 tikz 图片中获得透明度和圆角?

如何在不使用附加包的情况下在 tikz 图片中获得透明度和圆角?

我正在尝试创建一个同时具有圆角和透明度的 tikz 图像。下面给出的 MWE 所面临的问题是,我可以同时具有透明度或圆角,但不能同时具有两者。

平均能量损失

\documentclass[border=10pt,multi,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
    \node [inner sep=0pt,opacity=0.2,clip,rounded corners=0.1cm] {\includegraphics[width=0.85\textwidth,keepaspectratio]{example-image-a}};
\end{tikzpicture}
\end{document}

如何在不使用额外包的情况下获得透明度和圆角?

答案1

最简单的选择可能是

\documentclass[border=10pt,multi,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
   \begin{scope}[opacity=0.2]
    \node [inner sep=0pt,clip,rounded corners=0.1cm] {\includegraphics[width=0.85\textwidth,keepaspectratio]{example-image-a}};
   \end{scope}  
\end{tikzpicture}
\end{document}

在此处输入图片描述

我不明白为什么会有这个限制,因为如上所述,TiZ 实际上使用此类路径进行剪辑。

但是,在某些情况下,简单的范围可能不够用。在这种情况下,您可以保存并重复使用路径,根据我的经验,这是可行的。(我增加了圆角的半径,使其非常明显地起作用)

\documentclass[border=10pt,multi,tikz]{standalone}
\makeatletter % https://tex.stackexchange.com/a/38995/121799
\tikzset{
  use path/.code={\pgfsyssoftpath@setcurrentpath{#1}}
}
\makeatother
\begin{document}
\begin{tikzpicture}
    \node [inner sep=0pt,opacity=0,rounded corners=0.3cm,save path=\mypath]
     {\includegraphics[width=0.85\textwidth,keepaspectratio]{example-image-a}};
    \clip[use path=\mypath]; 
    \node [inner sep=0pt,opacity=0.2]
     {\includegraphics[width=0.85\textwidth,keepaspectratio]{example-image-a}};
\end{tikzpicture}
\end{document}

在此处输入图片描述

我同意所有这些额外的努力都是不必要的,但至少它是有效的并且满足“无额外包裹”的要求。

如果你不喜欢这些\makeatletter东西,你可以使用(这是我从 Kpym 的评论中学到的)

\documentclass[border=10pt,multi,tikz]{standalone}
\tikzset{use path/.code={\pgfsetpath{#1}}}
\begin{document}
\begin{tikzpicture}
    \node [inner sep=0pt,opacity=0,rounded corners=0.3cm,save path=\mypath]
     {\includegraphics[width=0.85\textwidth,keepaspectratio]{example-image-a}};
    \clip[use path=\mypath]; 
    \node [inner sep=0pt,opacity=0.2]
     {\includegraphics[width=0.85\textwidth,keepaspectratio]{example-image-a}};
\end{tikzpicture}
\end{document}

还有一个不使用明确剪辑的选项(但应小心使用)是

\documentclass[border=10pt,multi,tikz]{standalone}
\begin{document}
\begin{tikzpicture}
    \node [inner sep=0pt,rounded corners=0.3cm,
    path picture={\node[opacity=0.2] at (path picture bounding box.center)
    {\includegraphics[width=0.85\textwidth,keepaspectratio]{example-image-a}};}]
{\phantom{\includegraphics[width=0.85\textwidth,keepaspectratio]{example-image-a}}};
\end{tikzpicture}
\end{document}

也就是说,路径图片有效地剪辑,这让我们回到这样的说法:对于“不允许额外选择”的投诉可能没有深层原因,至少对于无害的选择而言。

相关内容