draw=none と draw opacity=0 の違いは何ですか (fill=none と fill opacity=0 の場合も同様)?

draw=none と draw opacity=0 の違いは何ですか (fill=none と fill opacity=0 の場合も同様)?

draw=noneTikZ のキーと値のペアとの違いは何ですか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}

ここに画像の説明を入力してください

関連情報