Das ist eine sehr einfache Frage.
Ist es möglich, einem Knoten einen „Kurven“-Effekt hinzuzufügen?
Betrachten Sie einen einfachen rechteckigen Knoten:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[draw,minimum width=3cm,minimum height=2cm]{};
\end{tikzpicture}
\end{document}
Ich möchte es wie im folgenden Bild krümmen
Dies sollte auf alle Knotenformen anwendbar sein.
Antwort1
Dies ist eine mögliche Lösung über tikz pics
. Hier wird ein Makro mynode
mit 6 Argumenten definiert, das mit unterschiedlichen x-, y-Längen und Krümmungen ausgestattet ist. Das letzte ist für Textbeschriftungen mit Kurve. Wenn überhaupt kein Text vorhanden ist, entfernen Sie die Pfaddekoration im Code.
Die gleiche Idee kann auf andere Formen angewendet werden, z. B. Dreiecke, aber der Code muss möglicherweise angepasst werden. Im Folgenden finden Sie die Definitionen der Argumente
#1=color, #2=x length, #3=y height, #4=inward bend angle, #5=outward bend angle, #6=text
Code
\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}