绘制带圆角的多边形的扩张

绘制带圆角的多边形的扩张

我正在尝试在 TikZ 中实现以下图片:

扩张多边形

当然,我只是在 TikZ 中这样做了,但我这样做的方式如下:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
    \begin{tikzpicture}
        \draw (0,1) coordinate (A);
        \draw (1,1) coordinate (B);
        \draw (3,3) coordinate (C);
        \draw (3,4) coordinate (D);
        \draw (0,4) coordinate (E);
        \fill[fill=blue!30,draw=black,thick,rounded corners=20pt] ($(A)+(-20pt,-20pt)$) -- ($(B)+(8.284pt,-20pt)$) -- ($(C)+(20pt,-8.284pt)$) -- ($(D)+(20pt,20pt)$) -- ($(E)+(-20pt,20pt)$) -- cycle;
        \fill[fill=red!30,draw=red] (A) -- (B) -- (C) -- (D) -- (E) -- cycle;
    \end{tikzpicture}
\end{document}

我真正想要的是指定红色多边形的坐标,然后绘制一个带圆角的放大版本。最终目的是突出显示图形中的某些区域。

任何想法和提示都将受到赞赏!

答案1

直接实施于tikz

\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
  \path (0,1) coordinate (A) (1,1) coordinate (B) (3,3) coordinate (C)(3,4) coordinate (D) (0,4) coordinate (E);
  \draw[rounded corners, line width=40pt] (A) -- (B) -- (C) -- (D) -- (E) -- cycle;
  \draw[rounded corners, blue!30, line width=39pt] (A) -- (B) -- (C) -- (D) -- (E) -- cycle;
  \draw[red, fill=red!30] (A) -- (B) -- (C) -- (D) -- (E) -- cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

以下是 James 在 Metapost 中实现的想法(我使用 ConTeXt,但同样的事情在 LaTeX 中也可以实现):

\starttext
\startMPpage[offset=2mm]
  path p;
  p := (0,1) -- (1,1) -- (3,3) -- (3,4) -- (0,4) -- cycle;
  p := p scaled 1cm;

  path q ;
  q := p cornered 10pt;

  draw q withcolor blue
      withpen pencircle scaled 21pt;

  draw q withcolor 0.3[white, blue]
      withpen pencircle scaled 20pt;

  fill p withcolor 0.3[white, red];
  draw p withcolor red;


\stopMPpage
\stoptext

这使

在此处输入图片描述

答案3

编辑: 新的、更简单的解决方案如下transform canvas

在此处输入图片描述

妇女权利委员会:

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{calc,positioning}

\begin{document}
    \begin{tikzpicture}
\coordinate                 (A) at (-1.5,-2);
\coordinate[above=4cm of A] (E);
\coordinate[right=3cm of E] (D);
\coordinate[below=1cm of D] (C);
\coordinate[right=1cm of A] (B);
%
\coordinate[right=2mm of B] (BC);
\coordinate[below=2mm of C] (CB);
%
\draw[draw=blue, fill=blue!30,thick,rounded corners=2mm,
      transform canvas={yscale=1.15,xscale=1.2}]
    (A) |- (D) -- (CB) -- (BC) --  cycle;
\draw[draw=red, fill=red!30] 
    (A) |- (D) -- (C) -- (B) -- cycle;

    \end{tikzpicture}
\end{document}

相关内容