我正在尝试在 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}