如何使 Tikz 节点弯曲?

如何使 Tikz 节点弯曲?

这是一个非常简单的问题。

是否可以给节点添加“曲线”效果?

考虑一个简单的矩形节点:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[draw,minimum width=3cm,minimum height=2cm]{};
\end{tikzpicture}
\end{document}

我想把它弯曲成如下图所示

在此处输入图片描述

这应该适用于所有节点形状。

答案1

这是通过 实现的一种可能的解决方案tikz pics。这里定义了一个名为 的宏,mynode它有 6 个参数,并配备了不同的 x、y 长度和曲率。最后一个是用于带曲线的文本标签。如果根本没有文本,请删除代码中的路径装饰。

相同的想法可以应用于其他形状,例如三角形,但代码可能需要一些修改。以下是参数的定义

#1=color, #2=x length, #3=y height, #4=inward bend angle, #5=outward bend angle, #6=text

在此处输入图片描述

代码

\documentclass[border=10pt]{standalone}%{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.text}
\tikzset{%
pics/.cd,
mynode/.style args={#1#2#3#4#5#6}{
code={\node[inner sep=0pt,outer sep=0pt] at (0,0) (a) {};
\path[fill=#1] 
(a) to[bend right=#4] ++(#2,0) -- ++(0,#3) to[bend left=#5] ++(-#2,0) -- cycle;
\path[postaction={decorate},           % remove this path if no text decoration.
         decoration={raise=-15pt,
         text along path, text={#6},
         text align={left indent ={1cm}}}] 
(a) to[bend right=#4] ++(#2,0); 
}},
}

% #1=color, #2=x length, #3=y height, #4= inward bend  angle, #5= outward bend angle, #6=text

\begin{document}
\begin{tikzpicture}
  \pic {mynode={purple}{6cm}{-1cm}{20}{10}{This is my curved text.}};
  \pic at (0,-2) {mynode={olive}{6cm}{-2cm}{30}{20}{This is my curved text.}};
  \pic at (0,-5) {mynode={blue}{6cm}{-2cm}{40}{30}{This is my curved text.}};
\end{tikzpicture}
\end{document}

相关内容