如何在C#中制作旋转位图动画?

时间:2014-06-17 18:23:27

标签: c# multithreading bitmap

我正试图以某种方式设置位图动画,我会看到它快速旋转直到它慢慢停止旋转。 我试图使用“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);
    }
}

我该怎么办? 也许其他一些方式? 请帮助一个代码示例。

1 个答案:

答案 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();
}