Tikz 比例与 pgf 比例

Tikz 比例与 pgf 比例

以下代码显示 tikz“比例”与 pgf 不同?

在 tikzset 命令中更改 x 和 y 的比例值将缩放 tikz 矩形,但不会缩放 pgf 星形。有什么想法可以解决这个问题吗?我需要能够轻松缩放我的 tikz 图片,但让 pgf 使用相同的比例和原点。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.callouts,shapes.geometric}
\begin{document}
\tikzset{x=0.1in,y=0.1in}
\begin{tikzpicture}
\draw[top color= black!50] (-2,-2) rectangle (5,4);

\begin{scope}
\pgfset{minimum width=1.5cm,minimum height=1.5cm}
\pgftransformshift{\pgfpoint{2cm}{2cm}}
\pgfnode{star}{center}{}{}{\pgfusepath{clip}}
\pgftransformreset
% Back to drawing
\fill[yellow] (2cm,2cm) circle (0.65cm);
\end{scope}
\end{tikzpicture}
\end{document}

答案1

主要的困难在于scaletransform shape键属于/tikz/家族,无法深入到 PGF 级别。相反,它们通过相当繁琐的机制进行映射。因此,我们需要使用低级转换命令来伪造它。如果出于某些原因我们仍然需要使用,[x=0.1in,y=0.1in]我们必须适当地添加相应的\pgfsetxvec\pgfsetyvec命令来模仿 TikZ 效果。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}

\begin{document}
\begin{tikzpicture}[scale=.75]
\pgfgettransform{\somemacro}
\draw[top color= black!50] (-2cm,-2cm) rectangle (5cm,4cm);
\draw[style=help lines] (-2cm,-2cm) grid[step=1cm] (5cm,4cm);
\node (o) at (0,0) {0};


\begin{scope}
\pgfset{minimum width=1.5cm,minimum height=1.5cm}
\pgftransformshift{\pgfpoint{3cm}{0cm}}
\pgfnode{star}{center}{}{}{\pgfusepath{clip}}
\pgfsettransform{\somemacro}
\fill[yellow] (3cm,0cm) circle (0.65cm);
\end{scope}

\node[draw,circle,transform shape] (dum) at (2,2) {(2,2)};

\begin{scope}
\pgfset{minimum width=2cm,minimum height=2cm}
\pgftransformshift{\pgfpoint{0cm}{2.5cm}}
\pgfnode{star}{center}{}{}{\pgfusepath{clip}}
\pgfsettransform{\somemacro}
\fill[red] (0cm,2.5cm) circle (0.8cm);
\end{scope}

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容