Unterschied zwischen „draw=none“ und „draw opacity=0“ (auch für „fill=none“ und „fill opacity=0“)?

Unterschied zwischen „draw=none“ und „draw opacity=0“ (auch für „fill=none“ und „fill opacity=0“)?

Was ist der Unterschied zwischen den Schlüssel-Wert-Paaren von TikZ draw=noneund draw opacity=0? Sind sie funktional gleichwertig oder gibt es Situationen, in denen eines dem anderen vorzuziehen ist? Und was ist der Unterschied zwischen fill=noneund fill opacity=0?

Antwort1

draw=none(was gleichbedeutend mit \patheinem Befehl ist) bewirkt tatsächlich, dass TikZ den erstellten Pfad verwirft und der Begrenzungsrahmen nicht gestört wird (Unsinn, es ändert zwar den Begrenzungsrahmen, line widthwird aber nur ignoriert. Danke an @Fritz, dass er diesen Blödsinn entdeckt hat).

draw opacity=0bewirkt jedoch, dass der Pfad ohne Tinte gezeichnet wird, sodass der Begrenzungsrahmen mit line widthaktivierter Option aktualisiert wird. Der Linienstil ist also für die Berechnung des Begrenzungsrahmens von Bedeutung.

\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}

Bildbeschreibung hier eingeben

Antwort2

filling opacitygilt nicht nur für Füllvorgänge, sondern auch für Text und Bilder; das folgende Beispiel zeigt einen Fall, in dem fill=noneund fill opacity=0(ich habe es eigentlich fill opacity=0.2nur verwendet, um den Text sichtbar zu machen) unterschiedliche Ergebnisse liefern; fill=nonehat keine Auswirkung auf die Knotenbeschriftung, fill opacity=<value>wirkt sich aber auf den Text aus:

\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}

Bildbeschreibung hier eingeben

verwandte Informationen