我有起始(x1,y1)和结束(x2,y2),以及它们存储在RGBA中的颜色。
我需要在这两个点之间绘制一条渐变填充线,并且对于沿线的每个点,我可以在递增的while循环中获得当前(x,y)位置。
开始和结束颜色可用作point1.color& point2.color。
然后我使用DrawPoint(Vector(x,y))绘制一个点,并在再次通过循环之前使用SetColor(RGBA)设置颜色。
答案 0 :(得分:3)
现有代码(您在问题中提到的)为此行绘制的单个点数必须为:
l=max(abs(x2-x1), abs(y2-y1))+1
也就是说,如果线大部分垂直定向,则每行应绘制一个点。如果它主要是水平定向的,那么每列中都应该绘制一个点。因此,我们可以推导出绘制的单个点的总数l
,简单地说就是起始和结束x / y坐标之间的最大差异。这就是您现有代码应该做的事情。
所以,你事先知道你将会得到l
分。现在,这成为每个r
,g
,b
和a
组件之间的简单线性插值。如果“R1”是(x1,y1)处的R分量,而“R2”是(x2,y2)处的R分量:则在绘制i
点时,i
从l
开始对于(x1,y1)为0,并且在(x2,y2)处达到R1+i/l*(R2-R1)
,线性插值的R只是:
i=0
因此,i=l
这是R1,而G
这是R2。您必须计算此线性插值:使用浮点数学;或者先进行整数乘法,然后进行整数除法(假设你的整数精度足以避免乘法时出现溢出)。
为B
,A
和register_user()
组件进行泡沫,冲洗并重复相同的过程。