使用填充绘制实现不透明度:消除中间烦人的三角形

使用填充绘制实现不透明度:消除中间烦人的三角形

考虑以下 TIKZ 代码,产生 3 个突出显示的绿色顶点。

\documentclass{standalone}
\usepackage{tikz}

\tikzstyle{mycircle}=[draw, circle, minimum height=2.5mm]
\tikzstyle{mygreen}=[draw=green!80!black,fill=green!80!black!20!white]
\usetikzlibrary{backgrounds}

\begin{document}
    \begin{tikzpicture}[transform shape]
      \draw (4, 0) node[mycircle, mygreen] (V0) {};
      \draw (6.5, 1) node[mycircle, mygreen] (V1) {};
      \draw (9.25, 0) node[mycircle, mygreen] (V2) {};
    \scoped[on background layer] \filldraw [red!50, opacity=0.2, line width=3em, line join=round] (V0.center) -- (V2.center) -- (V1.center) -- cycle;
    \end{tikzpicture}
\end{document}

代码的输出如下所示: tikz 代码的输出 有没有办法让突出显示区域的红色中间部分与图片的其余部分保持相同的颜色,同时保持半透明?

答案1

您的问题对我来说不是很清楚。

对于它的第一个版本,您可以考虑我的评论或使用以下解决方案:

documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{backgrounds}
\tikzstyle{mycircle}=[draw, circle, minimum height=2.5mm]
\tikzstyle{mygreen}=[draw=green!80!black,fill=green!80!black!20!white]

\begin{document}
    \begin{tikzpicture}
\node (V=) [mycircle, mygreen] at (4, 0) (V0) {};
\node (V1) [mycircle, mygreen] at (6.5, 1) {};
\node (V2) [mycircle, mygreen] at (9.25, 0) {};
    \scoped[on background layer]
{
\draw[red!10, line width=2.5em, line join=round] (V0.center) -- (V2.center) -- (V1.center) -- cycle;
\fill[red!25] (V0.center) -- (V2.center) -- (V1.center) -- cycle;
}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

对于第二个版本,如果我理解正确的话,解决方案可以是:

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{backgrounds}

\begin{document}
    \begin{tikzpicture}[
mycircle/.style = {draw, circle, minimum size=2.5mm}
 mygreen/.style = {draw=green!80!black,fill=green!80!black!20!white}   
                        ]
\node (V=) [mycircle, mygreen] at (4, 0) (V0) {};
\node (V1) [mycircle, mygreen] at (6.5, 1) {};
\node (V2) [mycircle, mygreen] at (9.25, 0) {};
    \scoped[on background layer]
\filldraw[red!25, line width=2.5em, line join=round] (V0.center) -- (V2.center) -- (V1.center) -- cycle;
    \end{tikzpicture}
\end{document}

在此处输入图片描述

笔记:的功能opacity是使填充(或线条)透明,即其后面的图形可见。由于这个原因,在您的示例中,填充的一部分(即节点之间零宽度线之间的颜色区域)覆盖了实际线的内半部分。因此,覆盖的线条部分可以通过填充看到。

要使线条和填充颜色相同,填充颜色不应为透明。要使填充更亮,请更改填充颜色,例如从red!25更改为red!0

附录(题外话): 作为练习,如何使上述 MWE 代码更短:

\documentclass[tikz, margin=3mm]{standalone}

\begin{document}
    \begin{tikzpicture}[
mycircle/.style args = {#1/#2}{circle,
                        draw=#1, semithick, fill=#2,
                        minimum size=2.5mm},
  mycircle/.default = green!80!black/green!80!black!20!white
                        ]
\begin{scope}[nodes=mycircle]
\filldraw[red!10, line width=5mm, line join=round]
    (0.00,0) node {} --
    (2.50,1) node {} --
    (5.25,0) node {} -- cycle;
\end{scope}
    \end{tikzpicture}
\end{document}

结果和以前一样。

相关内容