我被迫在 my 中tikzset
为我的一个项目定义颜色。这要求我使用draw
my 中的命令tikzset
来设置颜色。
通常我可以直接使用\draw
命令来设置一个参数来[top color=#1,bottom color=#3, middle color=#2]
获得所需的结果,但在这种情况下,我想使用draw
我的 tikzset 以类似的方式定义褪色。
我怀疑是否有任何解决方法,除非shading
我在 PGF 手册 v3.00 中没有找到等效参数(?)的命令,请参阅第 694 页。
代码:
\tikzset{
mal/.style={->, >=stealth,
single arrow, line width=16mm,
single arrow head extend=.5cm, single arrow head indent=.25cm}
}
以及对象本身:
\begin{tikzpicture}[scale=2,node distance=1cm, auto,baseline=-.5ex]
\node (dummy) at (-5,-10) {};
\begin{scope}[remember picture,overlay,shift={(dummy.center)}]
\def\malpath{(8.75,4.25) arc (440:130:7.75)}
\draw[mal]
\malpath;
\end{scope}
答案1
嗯,又一个极坐标变换技巧。我们很幸运,因为路径是圆形的,所以我们可以做到这一点。对于其他曲线形状,这更复杂,甚至不可能
在这里,x 坐标变成了角度,因此通过上下移动我们可以控制半径。通过左右移动我们可以进行旋转。我在变换范围之内和之外放置了两个节点。玩弄它已经足够令人愉快了。请注意,箭头尖端也变形了。
\documentclass[tikz]{standalone}
\usepgfmodule{nonlineartransformations}
\usetikzlibrary{curvilinear,shapes.arrows}
\tikzset{arrownode/.style={
transform shape nonlinear=true,
shape=single arrow,
shape border rotate=180,
draw,
top color=red,
bottom color=blue,
middle color=black
}
}
\makeatletter
\def\polartransformation{% Directly from the manual
\pgfmathsincos@{\pgf@x}
\pgf@x=\pgfmathresultx\pgf@y%
\pgf@y=\pgfmathresulty\pgf@y%
}
\makeatother
\begin{document}
\begin{tikzpicture}
\node[arrownode,text height=1cm,middle color=white] at (0,3) {\phantom{\hspace{10cm}}};
\begin{scope}
\pgftransformnonlinear{\polartransformation}
\node[arrownode,text height=1cm] at (0,3) {\phantom{\hspace{10cm}}};
% rotate shading angle !!
\node[arrownode,shading angle=60] at (pi,-2) {\phantom{\hspace{10cm}}};
\end{scope}
\node[arrownode,middle color=white] at (pi,-2) {\phantom{\hspace{10cm}}};
\end{tikzpicture}
\end{document}