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++)
{
  //...

テストする完全なコードがなければ、正しい方向を目指しているかどうかを知るのは難しい;)

  • ラジアン変換にエラーがあり、/1800i*Math.pi/180ではないため、移動できます。3603600
  • なぜ 0 からではなく 1 から始めるのですか?

  • 線の太さで遊んで、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 に答える