我有一张基本图片(“砖”),我将其旋转/翻转/移位到其他图片(例如“墙”)。然后这些图片(“墙”)被绘制在我的 tikzpicture 中,它们本身可能被旋转/翻转/移位。
砖块图片渲染得很好,墙壁图片渲染得很好,但我似乎无法缩放或旋转墙壁图片(但我可以用xshift
和移动它yshift
)。
我已经关注这个嵌套图片问题\draw
通过将墙上图片中的替换为 解决了该问题\path
。但是,该问题与旋转和缩放无关。
我如何旋转/缩放wall
图片?目前,我最不理想的解决方法是将 tikz 放入brick
一个宏中,然后在墙体代码中调用该宏(而不是绘制砖块图片),但这似乎不是 tikz 的方法。
在上图中,移动墙壁(蓝色)可行,但 x 镜像墙壁(红色)不镜像。(显然不是要用砖块和墙壁,除非我结构有问题)。
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\tikzset{
brick/.pic={
\draw (0, 0) -- (1, 3) -- (2, 1.5) -- cycle;
},
wall/.pic={
\path pic {brick};
\path pic [xshift=1cm,yshift=2cm,scale=0.5] {brick};
}
}
\begin{tikzpicture}
\draw (-3, -1) rectangle (3, 4);% bounding box
\node at (0, 0) {.}; % origin
\draw pic {wall};
% scaling does not work
\path pic [red,ultra thin,xscale=-1] {wall};
% shifting works
\path pic [blue,ultra thin,xshift=1cm] {wall};
\end{tikzpicture}
\end{document}
答案1
这个问题与为什么 pic 选项会传递给整个对象?
绘制图片本质上就是绘制节点,因此你所了解的有关节点的一切都适用。例如:节点不会旋转/缩放,只会移动。但是,如果你说 ,节点就会旋转/缩放transform shape
。这确实是你问题的答案。
澄清:
% does not work
\path pic [red,ultra thin,xscale=-1] {wall};
% works
\path pic [red,ultra thin,xscale=-1,transform shape] {wall};
为了使事情变得简单,可以添加[every node/.style=transform shape]
tikzpicture 选项或类似功能。