Tikz:可能使用 calc 包来缩放坐标

Tikz:可能使用 calc 包来缩放坐标

我画了一个这样的矩形:

\draw[color=orange, fill=orange, opacity=0.1] (Q3term1) rectangle (Q3term2);

本质上我想要做的是将矩形水平拉伸 10%,垂直拉伸 5%,因此类似于:

\draw[color=orange, fill=orange, opacity=0.1] ($(1.1,1.05)*(Q3term1)$) rectangle ($(0.9,0.95)*(Q3term1)$);

如果有一种方法可以在不使用 calc 库的情况下做到这一点,那就更好了。

谢谢。

答案1

如果您不需要相对指定矩形的角,则可以rectangle为此使用节点。

\pgfpointlineattime{<factor>}{<p1>}{<p2>}宏是低级 PGF 版本,($(<p1>)!<factor>!(<p2>)$)也用于沿直线放置节点的选项pos=<factor>

如果要添加特定的填充长度,可以使用fit带有inner xsep和的库inner ysep

backgrounds库仅用于为图片添加简单的网格。

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{calc,backgrounds,fit}
\makeatletter
\tikzset{
  from/.code args={#1 to #2}{%
    \pgfextract@process\tikz@fromto@first{\tikz@scan@one@point\pgfutil@firstofone#1\relax}%
    \pgfextract@process\tikz@fromto@second{\tikz@scan@one@point\pgfutil@firstofone#2\relax}%
    % The next line sets "at".
    \pgfextract@process\tikz@node@at
      {\pgfpointlineattime{.5}{\tikz@fromto@first}{\tikz@fromto@second}}%
    \pgfpointdiff{\tikz@fromto@first}{\tikz@fromto@second}%
    \tikzset{
      shape=rectangle,
      anchor=center,
      inner sep=+0pt,
      outer sep=+0pt,
      minimum width/.expanded={abs(\the\pgf@x)},
      minimum height/.expanded={abs(\the\pgf@y)}}%
  }
}
\makeatother
\begin{document}
\begin{tikzpicture}[gridded,nodes={orange, draw, fill, fill opacity=.5}]
\path (1,1) coordinate (a)
      (3,4) coordinate (b)
      (4,1) coordinate (a')
      (6,4) coordinate (b');

\node[from=(a) to (b), xscale=1.1, yscale=1.05] {};
\node[fit=(a')(b'), inner xsep=.1cm, inner ysep=.07cm] {};
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容