我正在尝试使用 GDI 在 C++ 中从头开始实现渐变画笔。我不想使用 GDI+ 或任何其他图形框架。我希望渐变是任何方向(任意角度)。
我的伪代码算法:
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 度的倍数的角度。问题似乎是缩放因子没有在矩形的整个大小上缩放。
我不确定你是否明白我的意思,因为如果没有可视化的问题,真的很难解释我的问题。
如果有人可以帮助或将我重定向到一些有用的材料,我将不胜感激。