C++實現水波紋、火焰和血漿效果

點擊這裏查看原文

Code Project着火了!

    整個工程有三個類,它們可以讓你在圖象上添加一些很酷的效果。

    我把這些文件都放到我的代碼壓縮包裏面了,並且做了一個小工程來讓一些人使用起來更方便,但是我並沒有做它們的文檔說明。

    當您點擊了演示程序上面的“animate”按鈕之後,在圖象上面移動您的鼠標,點擊,然後設置其他的選項。滑動條用來改變血漿效果和火焰效果的透明度。爲了使設置生效,你需要釋放鼠標。

    通常情況下,你會看到這些效果都是實時的,並且我儘量把這些代碼轉換成面向對象的類的設計。我最初是在一個音頻應用程序上作爲vis類型的插件來使用它們的。

    我使用了chris maunder創建的一個CDibSectionLite類,因此我需要做一些工作去渲染圖象。這些效果都是採用的32位的圖象。

        CWaterRoutine - 渲染水波紋效果
        CFireRoutine - 渲染火焰效果
        CPlasmaRoutine - 渲染血漿效果

    看過這些效果的代碼之後,你會注意到這些效果都是在使用一個分離的濾波器來實現的。如果你從來沒有看過水波紋的代碼的話,你會感覺到驚訝,因爲如此簡單的代碼就可以實現一個這麼棒的效果。火焰和血漿效果也是一樣。試着改變其中的一些數據成員,你可以做很多其他的效果,不僅僅是演示程序裏面的那些效果。

    動畫效果僅僅是一個簡單的windows定時器實現的。有一點需要注意的是,我是在其他效果之上渲染的這些效果。

你可以隨意的使用這些代碼,但如果你使用在其他一些更有趣的地方、或者擴充、或者想要抱怨缺乏文檔的話,就丟一個email給我吧,或者僅僅是想認識我,呵呵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章