0

Paintイベントから呼び出された以下のコードが7つのブレードを描画しない理由を誰かが説明してもらえますか(NumberOfBlades = 7この場合)。他のブレード番号(3〜7)の場合も、一部の角度でブレードが欠落しますが、4つのブレードでのみ機能します。それはある種の小さくてばかげた間違いであるとほぼ確信していますが、私はそれを理解することができません。

Matrix transformMatrix = new Matrix();
PointF center = new PointF(x2, y);

float angle = 360.0f / (float)pump.Calculations.NumberOfBlades;

for (int i = 0; i < pump.Calculations.NumberOfBlades; i++)
{
    transformMatrix.Reset();
    transformMatrix.RotateAt(angle * i, center);
    blade.Transform(transformMatrix);
    g.DrawPath(blackPen, blade);
}

例

編集

私は解決策を見つけました:

for (int i = 0; i < pump.Calculations.NumberOfBlades; i++)
{        
    transformMatrix.RotateAt(angle, center,MatrixOrder.Prepend);
    g.Transform = transformMatrix;
    //lopatka.Transform(transformMatrix);
    g.DrawPath(blackPen, blade);
    g.ResetTransform();
}

だから今私の質問は、なぜそれがこのように機能するのかということです。

4

1 に答える 1

1

ブレード GraphicsPath で増加する回転を蓄積しているようです (反復ごとにブレードを開始位置にリセットしていないため)。段階的に回転させるか、ブレードを開始位置にリセットします。

于 2012-07-19T03:34:42.713 に答える