簡體   English   中英

發出動畫精靈C#

[英]Issue animating sprites C#

我在Form_Paint()事件中使用e.Graphics.DrawImage圖像。 我使用Timer刷新表單。 問題是動畫閃爍。 似乎更新e花費的時間太長。 我在PictureBox體內有2 PictureBox

有想法嗎?

更新:

    public Bitmap Paint(int state, Graphics g)
    {
        this.state = state;

        Bitmap temp;
        Graphics tempGraphics;
        temp = new Bitmap(45, 47, g);
        tempGraphics = Graphics.FromImage(temp);

        switch (state)
        {
            case 0:
                tempGraphics.DrawImageUnscaled(img, x, y);
                break;

            case 1:
                tempGraphics.DrawImageUnscaled(img, x, y - 42);
                break;
        }
    }

這將在將精靈添加到表單之前對其進行准備。

通常,通過將更新繪制到內存中的位圖來管理此問題。 然后將位圖繪制到屏幕上。 該過程較慢(因為還有更多工作要做),但它看起來更快,因為沒有閃爍。

但是,許多控件實際上會自動為您執行此操作。 研究雙重緩沖技術

在大多數情況下,這是由於未正確設置樣式而導致的,因此首先繪制了背景(通常為白色),然后繪制了圖像。

如果僅繪制圖形還不夠快,還可以在雙緩沖中搜索/讀取。

通過避免在表單本身上進行任何動畫處理,我解決了該問題。 如果將控件添加到窗體,然后為父級設置動畫,則會過度使用UI線程。 最好的解決方案是將所有動畫保留在圖片框中。

因此:您可以直接使用g.DrawImage()設置動畫,或者堅持使用PictureBox

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM