draw=none 和 draw opacity=0 之间的区别 (fill=none 和 fill opacity=0 之间也一样)?

draw=none 和 draw opacity=0 之间的区别 (fill=none 和 fill opacity=0 之间也一样)?

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=nonefill 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}

在此处输入图片描述

相关内容