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 回答