我正试图以某种方式设置位图动画,我会看到它快速旋转直到它慢慢停止旋转。 我试图使用“invokerequired”,但它没有向我显示旋转的进度,只是我看到所有角度而不是最后一个角度的结果。
private void GameBoardPanel_MouseClick(object sender, MouseEventArgs e)
{
bool move = PickOrDropPiece(e);
Point piecePos = getBoardPointLocation(e);
if (move)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(x => Run(piecePos)));
}
}
private void Run(Point pos)
{
const int Max = 1000;
for (int i = 0; i < Max; i++)
{
Update(i , pos);
}
}
private void Update(int i, Point pos)
{
if (this.InvokeRequired)
{
this.Invoke(new Action<int, Point>(Update), i , pos);
}
else
{
RotateImage(GameBoard.GetBitmap(pos), i * 90 % 360, pos);
}
}
我该怎么办? 也许其他一些方式? 请帮助一个代码示例。
答案 0 :(得分:0)
结帐Timer
课程和它的Elapsed
事件。
您可以这样做:
void Update
{
Update logic here
}
Timer UpdateTimer = new Timer();
void Initialize
{
UpdateTimer.Elapsed += Update;
}
void RotateStart
{
UpdateTimer.Start();
}
void RotateStop
{
UpdateTimer.Stop();
}