0

我在渐变的某些颜色之间出现了一个奇怪的问题。

为了创建渐变,我从中心到边界绘制均匀间隔的圆形楔子,并从循环中的位图线渐变像素填充每个圆形楔子。

我正在创建一个带有 3600 个楔子的圆圈,尽管它看起来不像是基于从红色数字渐变到黄色数字所产生的橙色内的屏幕截图。在红色和黄色之间添加橙色数字无济于事。但如果我只用 360 个楔形创建圆圈,渐变条带会更加明显。3600 可能是矫枉过正,并没有真正添加更多的细节,比如说,制作 1440 楔形的圆圈,但我不知道有任何其他方法可以稍微提升这个条带问题。

有什么想法可以解决这个问题,或者我做错了什么?可能是由circleMatrix旋转引起的吗?

替代文字 http://www.freeimagehosting.net/uploads/7e3382befe.jpg

4

2 回答 2

1

编辑: 由于精度错误,可能会出现一些伪影,因为您只有 255 个值的范围要分配。

为了尽量减少这种视觉效果,您可以尝试为您的色带添加一些模糊,但要注意左侧和右侧之间的连接:

//...

//Assign bitmapData to the leftToRightLine
var leftToRightLineBitmapData:BitmapData = 
                   new BitmapData(leftToRightLine.width,leftToRightLine.height);
leftToRightLineBitmapData.draw(leftToRightLine);

// add some blur filter to the color band
leftToRightLine.filters=[new BlurFilter(2,0, 3)];

// copy the color band on the bitmap but but starting at 1 pixel right to avoid
// the blur on the start
leftToRightLineBitmapData.draw(leftToRightLine, new Matrix(1,0,0,1, 1));

for(var i:int = 1; i < (DEFAULT_BANDING_QUALITY + 1); i++)
{
  //...

没有完整的代码来测试,很难知道我的目标是否正确;)

  • 你的弧度转换有一个错误,它是i*Math.pi/180而不是/1800,所以现在你可以去360而不是3600
  • 为什么从 1 开始而不是从 0 开始?

  • 尝试使用线条粗细并使用 lineGradientStyle

  • 你引用一个objMatrix但创建一个circleMatrix

于 2010-05-20T11:14:20.490 回答
0

我认为条带是由您的比率引起的。

试试这个:

graphics.beginGradientFill(GradientType.LINEAR, [nColor, nColor], [1, 1], [0, 255], objMatrix)

另外,objMatrix 实际上应该是 circleMatrix 吗?

您可以在LiveDoc中看到 [127, 255] 和 [0, 255] 之间的区别

于 2010-05-20T11:10:14.377 回答