当使用 draw 作为参数而不是命令时,如何使用左、中、右颜色?

当使用 draw 作为参数而不是命令时,如何使用左、中、右颜色?

我被迫在 my 中tikzset为我的一个项目定义颜色。这要求我使用drawmy 中的命令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}

在此处输入图片描述

相关内容