![TikZ - 图案中的线连接和线帽](https://linux22.com/image/438555/TikZ%20-%20%E5%9B%BE%E6%A1%88%E4%B8%AD%E7%9A%84%E7%BA%BF%E8%BF%9E%E6%8E%A5%E5%92%8C%E7%BA%BF%E5%B8%BD.png)
在定义模式时可以修改和吗line join
?line cap
例如,我尝试了这些命令,\pgfsetroundjoin
\pgfsetroundcap
但是它不起作用。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{patterns.meta}
\pgfdeclarepattern{
name=herringbone,
bottom left=\pgfqpoint{0cm}{0cm},
top right=\pgfqpoint{2.4cm}{2.2cm},
tile size=\pgfqpoint{2.4cm}{0.6cm},
code={
\pgfsetlinewidth{1pt}
\pgfsetroundjoin
\pgfsetroundcap
\pgfpathmoveto{\pgfpoint{0cm}{0cm}}
\pgfpathlineto{\pgfpoint{1.2cm}{2.2cm}}
\pgfpathlineto{\pgfpoint{2.4cm}{0cm}}
\pgfusepath{stroke}
},
}
\begin{document}
\begin{tikzpicture}
\node[inner sep=0pt] at (0,0){
\tikz \fill[pattern=herringbone, pattern color=black]
(0,0)--(-10,0)--(-10,-10)--(0,-10)--cycle;%
};
\end{tikzpicture}
\end{document}
答案1
我终于找到了解决问题的方法。
该图案在bottom left
和top right
点处被“切割”,从而也切割了line join
和line cap
。
解决方法是扩展bottom left
和top right
点形成的矩形(不改变tile size
)。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{patterns.meta}
\pgfdeclarepattern{
name=herringbone,
bottom left=\pgfqpoint{-0.1cm}{-0.1cm},
top right=\pgfqpoint{2.5cm}{2.3cm},
tile size=\pgfqpoint{2.4cm}{0.6cm},
code={
\pgfsetlinewidth{1pt}
\pgfsetroundjoin
\pgfsetroundcap
\pgfpathmoveto{\pgfpoint{0cm}{0cm}}
\pgfpathlineto{\pgfpoint{1.2cm}{2.2cm}}
\pgfpathlineto{\pgfpoint{2.4cm}{0cm}}
\pgfusepath{stroke}
},
}
\begin{document}
\begin{tikzpicture}
\node[inner sep=0pt] at (0,0){
\tikz \fill[pattern=herringbone, pattern color=black]
(0,0)--(-10,0)--(-10,-10)--(0,-10)--cycle;%
};
\end{tikzpicture}
\end{document}
答案2
这是另一个观点。不要画两条线(先上后下),而是画一个三条线的图案,只画一个圆形连接(不是帽,这会产生奇怪的行为,即使在您自己提供的解决方案中也是如此)。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{patterns.meta}
\pgfdeclarepattern{
name=herringbone,
bottom left=\pgfqpoint{0.6cm}{-0.1cm},
top right=\pgfqpoint{3cm}{2.3cm},
tile size=\pgfqpoint{2.4cm}{0.8cm},
code={
\pgfsetlinewidth{3pt}
\pgfsetroundjoin
\pgfsetbuttcap
% \pgfpathmoveto{\pgfpoint{0.6cm}{1.1cm}}
\pgfpathmoveto{\pgfpoint{0.48cm}{0.88cm}}
\pgfpathlineto{\pgfpoint{1.2cm}{2.2cm}}
\pgfpathlineto{\pgfpoint{2.4cm}{0cm}}
% \pgfpathlineto{\pgfpoint{3cm}{1.1cm}}
\pgfpathlineto{\pgfpoint{3.12cm}{1.32cm}}
\pgfusepath{stroke}
},
}
\begin{document}
\begin{tikzpicture}
\fill[pattern=herringbone, pattern color=black]
(0,0)--(-10,0)--(-10,-10)--(0,-10)--cycle;
\end{tikzpicture}
\end{document}
你可以看到我画了一点盒子外面,但要按比例,以避免错误的垂直切割线,如下所示: