%3F.png)
В чем разница между парами ключ-значение TikZ draw=none
и draw opacity=0
? Эквивалентны ли они функционально или есть ситуации, в которых один из них следует предпочесть другому? Аналогично, в чем разница между fill=none
и fill opacity=0
?
решение1
draw=none
(что эквивалентно \path
команде) на самом деле заставляет TikZ отбросить построенный путь , и ограничивающий прямоугольник не нарушается (Чепуха, он действительно изменяет ограничивающий прямоугольник, но только line width
игнорируется. Спасибо @Fritz за то, что заметил эту глупость).
draw opacity=0
Однако контур рисуется без использования чернил, поэтому ограничивающая рамка обновляется в соответствии с line width
действующим параметром, поэтому стиль линии имеет значение для расчета ограничивающей рамки.
\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}
решение2
filling opacity
применяется не только к операциям заполнения, но также применяется к тексту и изображениям; следующий пример показывает случай, в котором fill=none
и fill opacity=0
(на самом деле я использовал его fill opacity=0.2
только для того, чтобы сделать текст видимым) дают разные результаты; fill=none
не влияет на метку узла, но fill opacity=<value>
влияет на текст:
\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}