笔画不透明度和填充不透明度之间的干扰

笔画不透明度和填充不透明度之间的干扰

我在图画中画了几个圆圈,想突出显示其中的一些。

\begin{tikzpicture}

\coordinate (A1) at (0,0);
\coordinate (A2) at (1,0);
\coordinate (A3) at (1,1);
\coordinate (B)  at (1,0);

\draw (A1) -- (A2);
\draw (A1) -- (A3);
\draw (B)  -- (A3);

\foreach \point in {A1,A2,A3,B} {
   \fill [black,draw=white](\point) circle (3pt);
}

\pgfsetstrokeopacity{.3}
\pgfsetfillopacity{.3}
\fill [red,draw,rounded corners,line width=9pt] (A1) -- (A2) -- (A3) -- cycle;
\pgfsetstrokeopacity{1}
\pgfsetfillopacity{1}
\end{tikzpicture}

我希望 A 点周围的整个区域都是相同的颜色,但是笔触不透明度和填充不透明度会造成干扰。

有什么方法可以防止这种情况发生吗?

注意:在我的实际使用场景中,坐标太多,无法手动调整(否则我只会使用圆角填充,并手动计算点)。

答案1

我不确定您要做什么,但目前您只是在填充路径,而不是绘制路径。因此,例如,线宽不会影响可见输出。

我看不出有任何理由要采用\pgf...这里而不是使用 TikZ 选项。

有一种可能性是:

\documentclass[tikz,border=10pt,multi]{standalone}
\begin{document}
\begin{tikzpicture}
  \coordinate (A1) at (0,0);
  \coordinate (A2) at (1,0);
  \coordinate (A3) at (1,1);
  \coordinate (B)  at (1,0);
  \draw (A1) -- (A2);
  \draw (A1) -- (A3);
  \draw (B)  -- (A3);
  \foreach \point in {A1,A2,A3,B} {
    \fill [black,draw=white](\point) circle (3pt);
  }
  \filldraw [red, rounded corners, line width=9pt, opacity=.3] (A1) -- (A2) -- (A3) -- cycle;
\end{tikzpicture}
\end{document}

产生

透明填充

较暗部分的原因是 TikZ 填充绘制这些,因此那里的有效不透明度增加了一倍。

为了避免这种情况,您可以使用transparency group

\documentclass[tikz,border=10pt,multi]{standalone}
\begin{document}
\begin{tikzpicture}
  \coordinate (A1) at (0,0);
  \coordinate (A2) at (1,0);
  \coordinate (A3) at (1,1);
  \coordinate (B)  at (1,0);
  \draw (A1) -- (A2);
  \draw (A1) -- (A3);
  \draw (B)  -- (A3);
  \foreach \point in {A1,A2,A3,B} {
    \fill [black,draw=white](\point) circle (3pt);
  }
  \begin{scope}[transparency group, opacity=.3]
    \filldraw [red, rounded corners, line width=9pt] (A1) -- (A2) -- (A3) -- cycle;
  \end{scope}
\end{tikzpicture}
\end{document}

透明集团

相关内容