Diferença entre draw=none e draw opacity=0 (também para fill=none e fill opacity=0)?

Diferença entre draw=none e draw opacity=0 (também para fill=none e fill opacity=0)?

Qual é a diferença entre os pares de valores-chave TikZ draw=nonee draw opacity=0? Eles são funcionalmente equivalentes ou existem situações em que um deve ser preferido a outro? Da mesma forma, qual é a diferença entre fill=nonee fill opacity=0?

Responder1

draw=none(que é igual ao \pathcomando) na verdade faz com que o TikZ jogue fora o caminho construído e a caixa delimitadora não seja perturbada (absurdo, ele altera a caixa delimitadora, mas apenas line widthé ignorado. Obrigado a @Fritz por perceber essa estupidez).

draw opacity=0no entanto, faz com que o caminho seja desenhado sem tinta, de modo que a caixa delimitadora seja atualizada com line widtha opção em vigor, de modo que o estilo da linha seja importante para o cálculo da caixa delimitadora.

\begin{tikzpicture}
\draw (0,0) rectangle (3,3);
\draw[opacity=0,line width=1cm] (0,0) rectangle (3,3); % Enlarge the bounding box 

\pgfsetlinewidth{5cm}     % this has no effect
\pgfpathmoveto{\pgfpointorigin}
\pgfpathlineto{\pgfpoint{4cm}{4cm}} % this updates the known max x,y coordinates!!
\pgfusepath{}                       % even though it's thrown away. 

\begin{pgfinterruptboundingbox}
\pgfpathmoveto{\pgfpointorigin}
\pgfpathlineto{\pgfpoint{10cm}{10cm}} % Nothing happens
\pgfusepath{}
\end{pgfinterruptboundingbox}


\draw[dashed,thin] (current bounding box.north east) rectangle (current bounding box.south west);
\end{tikzpicture}

insira a descrição da imagem aqui

Responder2

filling opacityaplica-se não apenas a operações de preenchimento, mas também a textos e imagens; o exemplo a seguir mostra um caso em que fill=nonee fill opacity=0(na verdade usei fill opacity=0.2apenas para tornar o texto visível) produz resultados diferentes; fill=nonenão tem efeito no rótulo do nó, mas fill opacity=<value>afetará o texto:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\fill[olive] (0,0) rectangle (3,2);
\node[fill opacity=0.2] at (3,2) {\huge B};
\node[fill=none] at (0,0) {\huge A};
\end{tikzpicture}

\end{document}

insira a descrição da imagem aqui

informação relacionada