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)
extendDistanceは、長方形の中心から通る線の長さであり、グラデーションの角度に等しいグラデーションを持ちます。
これまでのところ順調です。これを描くことができて、見栄えがします。しかし、残念ながら、回転ビットのために、長方形の角の色が間違っています。結果は、90度の倍数である角度に対してのみ完璧です。問題は、スケーリング係数が長方形のサイズ全体にスケーリングされないことであるように見えます。
あなたが私のポイントを理解したかどうかはわかりませんが、それを視覚化せずに私の問題を説明するのは本当に難しいです。
誰かが私を助けたり、役立つ資料にリダイレクトしたりできるなら、私は感謝するでしょう。