shift
我在使用和时遇到问题rotate
。在一种情况下,矩形被拉长到移位和旋转的停止点。
但是,如果我在另一种情况下发出相同的命令,矩形将以适当的方式旋转和移动,而不是拉长到停止点。
\documentclass[convert = false, tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\coordinate (O) at (0, 0);
\filldraw[outer color = blue!75!pink!60,
inner color = red!50!black!20, rotate = {-30}, shift = {(2, 0)}] (O) rectangle
(.75, .5);
\filldraw[red] (3, 0) rectangle (4, .75);
\filldraw[red, rotate = {45}, shift = {(1, 0)}] (3, 0) rectangle (4, .75);
\end{tikzpicture}
\end{document}
我希望拉长的矩形表现得像红色矩形。当我发出rotate
和 时shift
,我希望矩形表现得像红色矩形,而不是拉伸到该点。
只有当物体位于原点时才会发生这种拉伸。
答案1
这些变换不具有交换性。请考虑以下示例;
\documentclass[convert = false, tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw[style=help lines] (0,0) grid[step=1cm] (3,3);
\coordinate (A) at (1,1);
\fill[red,shift={(1,0)}] (A) rectangle (2,2);
\fill[blue,rotate=45,shift={(1,0)}] (A) rectangle (2,2);
\fill[yellow,shift={(1,0)},rotate=45] (A) rectangle (2,2);
\fill[orange,rotate=45] (A) rectangle (2,2);
\end{tikzpicture}
\end{document}
从最后一个橙色框中可以看到,(2,2)
被旋转并变为垂直,但(A)
却没有。这是因为(1,1)
仍然在原来的位置。简而言之,这就是坐标变换和画布变换之间的区别。
这就是我坚持使用较低级别 PGF 版本转换的原因之一。否则,如果您想对坐标本身进行操作,Jake 的评论就是您的最佳选择。