在 TiKZ 中分别对形状和线宽进行 x 和 y 缩放

在 TiKZ 中分别对形状和线宽进行 x 和 y 缩放

我知道如何在 TiKZ 中缩放形状。以下代码片段绘制两个矩形,其中第一个矩形的线宽为 2,第二个矩形是第一个矩形的缩放版本,xscale=6,yscale=2。

\documentclass{report}
\usepackage{tikz,pgfplots}
\begin{document}
\begin{tikzpicture}
\draw[line width =2] (0,3) rectangle ++ (1,1);                        % First rectangle (original)
\draw[line width =2,xscale=6,yscale=2] (0,0) rectangle ++ (1,1);      % Second rectangle (scaled version)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Labels
\node at(10,3.5) {First rectangle (original)};
\node at(10,1) {Second rectangle (scaled version)};
\end{tikzpicture}
\end{document}

以下是预览: 在此处输入图片描述

我想要做的是缩放线宽以及形状。特别是,我希望第一个矩形的缩放版本如下所示 在此处输入图片描述

不同之处在于 xscaling 和 yscaling 操作影响了所有内容,垂直线和水平线的粗细分别为 6 和 2。我发现的所有方法(如或者使用带范围的仿射变换)似乎有效。感谢您的时间。

附录

我需要一个一般性的答案。也就是说,我在 tikzpicture 中可能有许多形状,每个形状的缩放、旋转或通常变换方式都不同。因此,这个问题的答案必须只影响故意的形状,而不是任何其他形状。此外,形状是通用的(即它们可以是矩形、椭圆形、星形、多边形等)。

答案1

您可以不用缩放形状本身,而是变换绘制形状的画布,就像在空气球上绘图然后将其吹起来一样:

\documentclass{report}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[line width =2] (0,3) rectangle ++ (1,1); 
\begin{scope}[transform canvas={xscale=6,yscale=2}]
   \draw[line width =2] (0,0) rectangle ++ (1,1);     
\end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容