我想在C++中用GDI實現一個漸變筆刷。我不想使用GDI +或任何其他圖形框架。我想漸變是任何方向(任意角度)。從C++和GDI的scatch中實現多梯度筆刷實現的問題
我在僞碼算法:
For each pixel in x dirrection
For each pixel in the y direction
current position = current pixel - centre //translate origin
rotate this pixel according to the given angle
scalingFactor =(rotated pixel + centre)/extentDistance //translate origin back
rgbColor = startColor + scalingFactor(endColor - startColor)
extentDistance是從矩形的中心通過所述線的長度,並具有梯度等於所述梯度
確定到目前爲止好的角度。我可以畫這個,看起來不錯。但不幸的是,由於旋轉位矩形拐角有錯誤的顏色。結果只適用於90度倍數的角度。問題似乎是縮放因子不能在整個矩形的大小範圍內縮放。
我不知道你是否明白我的觀點cz如果沒有可視化的解釋,我很難解釋我的問題。
如果任何人都可以幫助或將我重定向到一些有用的材料,我將不勝感激。
發佈您的實際代碼可能會更有幫助。僞代碼看起來沒問題,所以有可能問題在於實現的細節。 – 2011-08-17 16:17:22