0
有人可以解釋爲什麼下面的代碼從繪圖事件調用不繪製7個刀片(在這種情況下爲NumberOfBlades = 7
)。對於其他刀片編號(3-7),它也會在某些角度上錯過刀片,只有4個刀片才能起作用。我幾乎可以肯定,這是一種小的錯誤,但我無法弄清楚。使用RotateAt繪圖與GDI的圖形路徑+
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();
}
所以現在我的問題是,爲什麼是這樣工作的?
@holtavolt我試着用增量式旋轉它 - 每次用const角度調用旋轉,它仍然是一樣的,我打電話給transformMatrix.Reset();在每個循環的開始,所以它不應該工作? – Archibald 2012-07-19 03:12:50
@holtavolt好吧你是對的,請張貼您的評論作爲答案,所以我可以接受它:)。 – Archibald 2012-07-19 03:18:24