заливка + узор на разных путях и на одном и том же пути

заливка + узор на разных путях и на одном и том же пути

Почему следующая рукопись LaTeX

\documentclass[tikz,convert]{standalone}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}[color=black]
  \path[fill=red] (0,0) rectangle (1,1);
  \path[pattern=bricks] (0,0) rectangle (1,1);
\end{tikzpicture}
\end{document}

производит красные кирпичи:

Красный кирпич

объединив две \pathстроки в одну, как показано ниже:

\path[fill=red, pattern=bricks] (0,0) rectangle (1,1);

производит белые кирпичи:

Белый кирпич

?

Либо внутренняя часть кирпичей в кирпичном узоре прозрачна, либо нет. Если она прозрачна, почему красная заливка не просвечивает во втором случае? Если она непрозрачна, почему красная заливка просвечивает в первом случае?

решение1

В первом случае у вас есть два разных \paths, поэтому сначала рисуется красный прямоугольник, а затем patternсверху рисуется . Поскольку patternрисует только черные линии (не заполняет части между ними), вы видите красный цвет ниже.

Во втором случае, поскольку вы добавляете patternпосле fillвтакой же \path,pattern заменяетВ fillруководстве говорится,

Узор работает как цвет заливки. В частности, установка нового цвета заливки снова заполнит путь сплошным цветом.

так что с fill=red, pattern=bricksигнорируется fill, и patternрисуется только. Аналогично, если поменять порядок ( pattern=bricks,fill=red), fillрисуется только .

Если вы хотите сделать оба варианта в одном пути, вы можете использовать preactionили postaction.

\documentclass[tikz]{standalone}
\usetikzlibrary{patterns}
\begin{document}
\begin{tikzpicture}[color=black]
  \path[fill=red,postaction={pattern=bricks}] (0,0) rectangle (1,1);

  \path[preaction={fill=blue},pattern=bricks] (1,0) rectangle (2,1);
\end{tikzpicture}
\end{document}

Связанный контент