我正在尝试编写一个代码,该代码将填充一个矩形区域,其渐变沿该区域的对角线变化。我以为我可以使用direction参数,如下所示:
context->GradientFillLinear(
wxrect,
get_wx_colour(gradient.front()),
get_wx_colour(gradient.back()),
wxNORTH | wxEAST);
当我这样做时,编译器将direction子表达式转换为int,并且由于类型不匹配而无法编译。我怀疑渐变只能水平或垂直填充,这就是为什么写入参数期望枚举值。任何人都可以证实这种怀疑吗?
答案 0 :(得分:1)
从wxWidget-3.0.2开始,GradientFillLinear
的实现最终调用了一个特定的实现,看起来有点像:
wxDCImpl::DoGradientFillLinear()
{
...
if ( nDirection == wxEAST || nDirection == wxWEST )
{
...
}
else // nDirection == wxNORTH || nDirection == wxSOUTH
{
...
}
所以,你的怀疑似乎是正确的,即使你确实设法在wxNORTH | wxEAST
的论证中以某种方式强迫GradientFillLinear
的方向,实施也不会支持它。
答案 1 :(得分:1)
正如SleuthEye的回答所说,这不能直接完成,但您可以随时应用转换将水平或垂直渐变旋转45度。