TikZ - 图案中的线连接和线帽

TikZ - 图案中的线连接和线帽

在定义模式时可以修改和吗line joinline 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 lefttop right点处被“切割”,从而也切割了line joinline cap

解决方法是扩展bottom lefttop 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}

你可以看到我画了一点盒子外面,但要按比例,以避免错误的垂直切割线,如下所示:

图案创作

相关内容