Я пытаюсь реализовать градиентную кисть с нуля в C ++ с помощью GDI.Я не хочу использовать 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)
экстентДистанция - это длина линии, проходящей от центра прямоугольника и имеющая градиент, равный углу наклона
Хорошо, пока все хорошо.Я могу нарисовать это, и это выглядит красиво.НО, к сожалению, из-за бита вращения углы прямоугольника имеют неправильный цвет.Результат идеально подходит только для углов, кратных 90 градусам.Проблема заключается в том, что коэффициент масштабирования не масштабируется по всему размеру прямоугольника.
Я не уверен, что вы поняли мою точку зрения. Очень сложно объяснить мою проблему без ее визуализации.
Если кто-нибудь может помочь или перенаправить меня на какой-нибудь полезный материал, я буду благодарен.