忽略 pgf 装饰中的旋转

忽略 pgf 装饰中的旋转

编辑:我感兴趣的是如何使用 pgf 装饰来解决或不解决此问题,而不是如何绘制此特定形状。


我正在尝试使用 pgf 线条装饰来绘制虚线,其中点是正方形,如下所示:

正确的线路行为

但是 pgf 会自动旋转绘制正方形的环境,如以下代码所示:

\documentclass{article}
\usepackage{tikz}

\usetikzlibrary{calc,decorations}

\pgfdeclaredecoration{Squares}{initial}{
  \state{initial}[width=10pt]{
    \fill (0cm,0cm) rectangle (5pt,5pt);
  }
  \state{final}{
    \pgfpathlineto{\pgfpointdecoratedpathlast}
  }
}

\begin{document}
\begin{center}
  \begin{tikzpicture}
    \draw[decorate,decoration=Squares] (0,0) -- (5,5);
  \end{tikzpicture}
\end{center}
\end{document}

输出如下内容:

在此处输入图片描述

有没有办法可以补偿自动旋转,或者交替禁用它?

答案1

\fill输入装饰代码(由 给出)后,按照与旋转相反的方向旋转装饰命令\pgfdecoratedangle

\documentclass[tikz]{standalone}

\usetikzlibrary{calc,decorations}

\pgfdeclaredecoration{Squares}{initial}{
  \state{initial}[width=10pt]{
    \fill[rotate=-\pgfdecoratedangle] (0cm,0cm) rectangle (5pt,5pt);
  }
  \state{final}{
    \pgfpathlineto{\pgfpointdecoratedpathlast}
  }
}

\begin{document}
  \begin{tikzpicture}
    \draw[decorate,decoration=Squares] (0,0) -- (1,5);
    \draw[decorate,decoration=Squares] (0,0) -- (5,5);
    \draw[decorate,decoration=Squares] (0,0) to[out=0,in=-90] (5,5);
    \draw[decorate,decoration=Squares] (0,0) -- (5,1);
  \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容