2015-02-12 114 views
0

我想寫代碼,將填充一個矩形區域的梯度,沿着該區域的對角線變化。我原以爲我能與方向參數如下發揮:有沒有辦法在對角線上填充線性漸變?

context->GradientFillLinear(
    wxrect, 
    get_wx_colour(gradient.front()), 
    get_wx_colour(gradient.back()), 
    wxNORTH | wxEAST); 

當我這樣做時,編譯器方向的子表達式轉換爲int和失敗,因爲一個類型不匹配的編譯。我懷疑梯度只能水平或垂直填充,這就是爲什麼參數寫入期望枚舉值。任何人都可以證實這種懷疑嗎?

回答

1

由於wxWidget-3.0.2的GradientFillLinear實施最終調用一個具體的實現看起來有點像:

wxDCImpl::DoGradientFillLinear() 
{ 
    ... 
    if (nDirection == wxEAST || nDirection == wxWEST) 
    { 
    ... 
    } 
    else // nDirection == wxNORTH || nDirection == wxSOUTH 
    { 
    ... 
    } 

所以,你的懷疑似乎是正確的,即使你沒有管理以某種方式強迫在GradientFillLinear的參數中的方向爲wxNORTH | wxEAST,實現將不支持它。

1

由於SleuthEye的回答正確地說,這不能直接完成,但您始終可以應用轉換來將水平或垂直漸變旋轉45度。