Nana開發:映像混合

來源:互聯網
上載者:User

混合映像是用於建立強大且迷人的使用者介面的重要方法之一。這是一篇嚮導,用於展示如何使用Nana庫來混合映像並顯示混合的結果。

在開始這個嚮導之前,我們需要準備兩張用於混合的圖片。

image01

image02

這兩張圖片是PNG格式的,在使用之前,我們需要開啟Nana庫對PNG的支援。

現在,我們來編碼:

#include <nana/gui/wvl.hpp>#include <nana/gui/drawing.hpp>#include <nana/gui/timer.hpp>class tsform: public nana::gui::form{public://因為我們準備的圖片大小是 450*300,//這個視窗建立的大小與圖片保持一致.tsform():nana::gui::form(nana::gui::API::make_center(450, 300)), fade_rate_(0.1), delta_(0.1){//開啟影像檔.image1_.open(STR(“image01.png”));image2_.open(STR(“image02.png”));timer_.make_tick(nana::make_fun(*this, &tsform::_m_blend));timer_.interval(10);}private:void _m_blend(){fade_rate_ += delta_;if(fade_rate_ > 1){fade_rate_ = 1;delta_ = -0.01;}else if(fade_rate_ < 0){fade_rate_ = 0;delta_ = 0.01;}            //在混合之前,需要將映像拷貝到graphics對象中nana::paint::graphics graph1(450, 300);image1_.paste(graph1, 0, 0);nana::paint::graphics graph2(450, 300);image2_.paste(graph2, 0, 0);//執行混合,結果儲存在graph2對象中.graph1.blend(graph2, 0, 0, fade_rate_);//顯示結果,將graph2中的內容繪製到視窗上.nana::gui::drawing drawing(*this);drawing.clear();drawing.bitblt(0, 0, 450, 300, graph2, 0, 0);drawing.update();}private:double    fade_rate_;double    delta_;nana::gui::timer    timer_;nana::paint::image image1_, image2_;};int main(){tsform fm;fm.show();nana::gui::exec();}

運行程式,看它的實際運行效果。

初始映像

混合的映像

最終的映像

程式重複地執行映像混合。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.