欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

wxWidgets框架下大規(guī)模組件自繪制的快速處理方法

文檔序號(hào):6517373閱讀:441來源:國知局
wxWidgets框架下大規(guī)模組件自繪制的快速處理方法
【專利摘要】本發(fā)明涉及wxWidgets組件的繪制處理技術(shù),其公開了一種wxWidgets框架下大規(guī)模組件自繪制的快速處理方法,解決現(xiàn)有技術(shù)中采用多個(gè)自定義組件掛載多個(gè)掛載事件表來處理不同的組件的自定義繪制,導(dǎo)致增加程序代碼的長(zhǎng)度,降低了開發(fā)效率也增加了維護(hù)的難度的問題。該方法包括:定義事件掛載表類,在所述事件掛載表類的成員變量中保存自繪制組件對(duì)象的指針,事件掛載表類對(duì)象在接收到自繪制的事件時(shí)通過相應(yīng)事件處理函數(shù)將自繪制組件對(duì)象的指針和接收到的事件轉(zhuǎn)發(fā)給對(duì)應(yīng)的圖形繪制槽函數(shù),從而實(shí)現(xiàn)組件的自定義繪制。本發(fā)明適用于對(duì)大規(guī)模組件的自定義繪制的快速處理。
【專利說明】wxWi dgets框架下大規(guī)模組件自繪制的快速處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及wxWidgets組件的繪制處理技術(shù),特別涉及wxWidgets框架下大規(guī)模組件自繪制的快速處理方法。
【背景技術(shù)】
[0002]目前的應(yīng)用程序開發(fā),都極注重用戶界面的設(shè)計(jì),漂亮精簡(jiǎn)的應(yīng)用程序廣受用戶的喜愛。同樣,在目前C++的圖形用戶界面程序開發(fā)框架中,wxWidgets,因其可視化的組件開發(fā)方式,而受到廣大程序員的喜愛,被應(yīng)用到各種領(lǐng)域。
[0003]現(xiàn)有技術(shù)中關(guān)于wxWidgets組件自繪制方式有兩種:一種是從wxWindow或wxControl繼承,實(shí)現(xiàn)自己的自定義繪制函數(shù),主要就是處理wxEVT_PAINT (繪制)和wxEVT_ERASE_BACKGROUND (擦除背景)事件;另一種方法是直接采用wxPanel控件(wxWindow類及其子類都可以,但wxPanel在wxFormbui Ider可視化設(shè)計(jì)環(huán)境中,能以可視化的方式進(jìn)行布局,從而減輕界面布局的工作),然后使用掛載事件表的方法來處理wxEVT_PAINT和wxEVT_
erase_background 事件。
[0004]上述兩種處理方式相比而言,采用掛載事件表的處理方式更加簡(jiǎn)單、靈活;但由于不同的組件需要不同的繪制方法,因此大多數(shù)程序里就有很多不同的事件表,對(duì)于現(xiàn)代的圖形化界面發(fā)展趨勢(shì),采用這種事件表來開發(fā)程序,效率也不是很高,維護(hù)仍然比較麻煩。

【發(fā)明內(nèi)容】

[0005]本發(fā)明所要解決的技術(shù)問題是:提出一種wxWidgets框架下大規(guī)模組件自繪制的快速處理方法,解決現(xiàn)有技術(shù)中采用多個(gè)自定義組件掛載多個(gè)掛載事件表來處理不同的組件的自定義繪制,導(dǎo)致增加程序代碼的長(zhǎng)度,降低了開發(fā)效率也增加了維護(hù)難度的問題。
[0006]本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案是:
[0007]wxffidgets框架下大規(guī)模組件自繪制的快速處理方法,包括:
[0008]定義事件掛載表類,在所述事件掛載表類的成員變量中保存自繪制組件對(duì)象的指針,事件掛載表類對(duì)象在接收到自繪制的事件時(shí)通過相應(yīng)事件處理函數(shù)將自繪制組件對(duì)象的指針和接收到的事件轉(zhuǎn)發(fā)給對(duì)應(yīng)的圖形繪制槽函數(shù),從而實(shí)現(xiàn)組件的自定義繪制。
[0009]進(jìn)一步,所述自繪制事件包括:繪制事件和擦除背景事件;所述相應(yīng)事件處理函數(shù)包括:繪制事件處理函數(shù)和擦除背景事件處理函數(shù);所述對(duì)應(yīng)的圖形繪制槽函數(shù)包括:繪制槽函數(shù)和擦除背景槽函數(shù)。
[0010]進(jìn)一步,所述事件掛載表類中有三個(gè)成員變量,其中一個(gè)成員變量保存自繪制組件對(duì)象的指針,另外兩個(gè)成員變量分別為繪制信號(hào)和擦除背景信號(hào)。
[0011]進(jìn)一步,所述繪制事件處理函數(shù)用于將繪制事件、自繪制組件對(duì)象的指針添加到繪制信號(hào)中,并將該繪制信號(hào)轉(zhuǎn)發(fā)給繪制槽函數(shù);所述擦除背景事件處理函數(shù)用于將擦除背景事件、自繪制組件對(duì)象的指針添加到擦除背景信號(hào)中,并將該擦除背景信號(hào)轉(zhuǎn)發(fā)給擦除背景槽函數(shù)。[0012]進(jìn)一步,該方法還包括:
[0013]在窗口初始化時(shí),掛接事件表對(duì)象,初始化繪制信號(hào)和擦除背景信號(hào),所述事件表對(duì)象為所述事件掛載表類的對(duì)象實(shí)例。
[0014]進(jìn)一步,掛接事件表對(duì)象,初始化繪制信號(hào)和擦除背景信號(hào)的具體方式為:
[0015]用自繪制組件的指針作為構(gòu)造函數(shù)的參數(shù),創(chuàng)建一個(gè)事件掛載表類實(shí)例對(duì)象;
[0016]將該實(shí)例對(duì)象的繪制信號(hào)連接到繪制槽函數(shù);
[0017]將該實(shí)例對(duì)象的擦除背景信號(hào)連接到擦除背景槽函數(shù);
[0018]將該實(shí)例對(duì)象壓入自定義繪制組件的事件表?xiàng)V小?br> [0019]進(jìn)一步,該方法還包括:
[0020]在窗口銷毀的時(shí)候,自繪制組件對(duì)象彈出已掛接的事件表。
[0021]本發(fā)明的有益效果是:采用單一簡(jiǎn)單的事件掛載表類,實(shí)現(xiàn)繪制事件到信號(hào)的轉(zhuǎn)發(fā),使得原本復(fù)雜的組件自定義繪制變成簡(jiǎn)單的函數(shù)調(diào)用,在很大程度上提高程序員的開發(fā)效率,節(jié)省了開發(fā)時(shí)間。
【具體實(shí)施方式】
[0022]本發(fā)明旨在提 出一種wxWidgets框架下大規(guī)模組件自繪制的快速處理方法,解決現(xiàn)有技術(shù)中采用多個(gè)自定義組件掛載多個(gè)掛載事件表來處理不同的組件的自定義繪制,導(dǎo)致增加程序代碼的長(zhǎng)度,降低了開發(fā)效率也增加了維護(hù)的難度的問題。
[0023]本發(fā)明的核心思想是:為了使單一的事件掛載表類能實(shí)現(xiàn)不同組件的自定義繪制,我們需要在類成員變量中保存不同組件的實(shí)例。采用信號(hào)/槽模式,在事件掛載表類對(duì)象收到繪制事件時(shí),通過信號(hào)/槽機(jī)制連接到真實(shí)的繪制函數(shù)上,把組件的實(shí)例和接收到的事件作為參數(shù)傳遞給真實(shí)的圖形繪制函數(shù),從而實(shí)現(xiàn)組件自定義繪制。
[0024]下面結(jié)合【具體實(shí)施方式】對(duì)本發(fā)明的方案作進(jìn)一步的描述:
[0025]對(duì)于事件掛載表類的實(shí)現(xiàn)方式如下:定義一個(gè)事件掛載表類(假設(shè)名為CustomPaintHandler,從庫中wxEvtHandler類繼承),用來接收自繪制的兩個(gè)事件,即繪制事件和擦除背景事件。
[0026]在這個(gè)事件掛載表類中,有三個(gè)成員變量,其中成員變量m_pWindoW保存自繪制組件對(duì)像的指針,類型為wxWindows*。在這個(gè)事件掛載類的構(gòu)造函數(shù)中將自定義繪制對(duì)象的指針作為參數(shù),保存在110^^(10?8變量中;另外兩個(gè)成員變量,代表兩個(gè)信號(hào),分別表示繪制信號(hào)和擦除背景信號(hào)。
[0027]兩個(gè)信號(hào)成員定義如下(這里采用BOOST庫里的信號(hào)):
[0028]boost:: signals2:: signaKvoid (wxffindow*, wxPaintEvent&) >m_sig0nPaint ;
[0029]boost:: signals2:: signaKvoid (wxffindow*, wxEraseEvent&) >m_sig0nErase ;
[0030]m_sig0nPaint信號(hào)對(duì)應(yīng)繪制事件,當(dāng)有繪制事件發(fā)生時(shí),發(fā)送這個(gè)信號(hào)。
[0031]m_sig0nErase信號(hào)對(duì)應(yīng)擦除背景事件,當(dāng)有擦除背景事件發(fā)生時(shí),發(fā)送這個(gè)信號(hào)。
[0032]在這個(gè)事件掛載表類中,采用繪制事件處理函數(shù)和擦除背景事件處理函數(shù)來分別處理繪制消息和擦除背景消息事件。這兩個(gè)事件處理函數(shù)主要作用是進(jìn)行信號(hào)轉(zhuǎn)發(fā):在繪制事件處理函數(shù)中發(fā)送繪制信號(hào),在擦除背景事件處理函數(shù)中發(fā)送擦除背景信號(hào)。對(duì)于發(fā)送繪制信號(hào),第一個(gè)參數(shù)傳遞事件掛載表類的成員變量m_pWindoW,第二個(gè)參數(shù)繪制事件的參數(shù);對(duì)于發(fā)送擦除背景信號(hào),第一個(gè)參數(shù)也是傳遞事件掛載表類的成員變量m_pWindoW,第二參數(shù)是擦除背景事件的參數(shù)。
[0033]利用上述事件掛載表類實(shí)現(xiàn)組件自定義的實(shí)現(xiàn)步驟如下:
[0034](I)在窗口中放置一個(gè)需自定義繪制的組件,如wxPanel*m_panelCustom。如果沒有采用界面編輯軟件來創(chuàng)建這個(gè)組件,還需要新建一個(gè)具體的組件實(shí)例;
[0035](2)在窗口所在類中實(shí)現(xiàn)兩個(gè)槽函數(shù)(繪制槽函數(shù)與擦除背景槽函數(shù)),與事件掛載表類中的信號(hào)相對(duì)應(yīng)(可以只實(shí)現(xiàn)一個(gè)槽函數(shù),但后面只能連接一個(gè)信號(hào)和槽),真正的繪制代碼就放在槽函數(shù)里面。如下定義:
[0036]void OnPaneICustomPaintHandler(wxffindow*pffindow, wxPaintEvent&event);
[0037]void OnPaneICustomEraseHandler(wxffindow*pffindow, wxEraseEvent&event);
[0038]由于槽函數(shù)的參數(shù)里有自定義繪制組件的指針和事件,所以可以根據(jù)程序的實(shí)際需要做圖形繪制。比如在繪制槽函數(shù)里把自定義繪制組件的指針傳給WxBufferedPaintDC的構(gòu)造函數(shù)來創(chuàng)建一個(gè)DC,用wxBufferedPaintDC::DrawRectangle繪制一個(gè)矩形圖形。
[0039](3)在窗口初始化的時(shí)候,掛接事件表對(duì)象(CustomPaintHandler的實(shí)例),重點(diǎn)是初始化兩個(gè)信號(hào)。初始化包括:
[0040]用自定義繪制組件指針作為構(gòu)造函數(shù)的參數(shù),創(chuàng)建一個(gè)掛接事件表對(duì)像實(shí)例。
[0041]把掛接事件表對(duì)像實(shí)例的繪制信號(hào)連接到(2)中的繪制槽函數(shù)(如果定義了繪制槽函數(shù))。
[0042]把掛接事件表對(duì)像實(shí)例的擦除背景信號(hào)連接到(2)中的擦除背景槽函數(shù)(如果定義了擦除背景槽函數(shù))。
[0043]最后我們把這個(gè)事件表壓入在自定義繪制組件的事件表?xiàng)V?,這樣當(dāng)自定義繪制組件產(chǎn)生繪制事件和擦除背景事件時(shí),就會(huì)進(jìn)入到掛接事件表中這兩個(gè)事件的處理函數(shù)中,再經(jīng)過信號(hào)轉(zhuǎn)發(fā)后進(jìn)入槽函數(shù),也就是真正的繪制函數(shù),完成自定義繪制。
[0044](4)在窗口銷毀的時(shí)候,自定義繪制組件彈出已掛載的事件表。
[0045]當(dāng)自定義繪制組件彈出事件表后,自定義繪制就不再起作用了。
[0046]相比現(xiàn)有技術(shù),本發(fā)明的技術(shù)方案的優(yōu)勢(shì)體現(xiàn)在:
[0047]1、在處理自定義組件繪制的時(shí)候,不再需要單獨(dú)繼承基礎(chǔ)組件或繼承事件表類;
[0048]2、把多步驟的組件的自定義繪制實(shí)現(xiàn)簡(jiǎn)化為一兩個(gè)實(shí)際繪制函數(shù)(即繪制槽函數(shù)和擦除槽函數(shù),可以根據(jù)需要只實(shí)現(xiàn)一種,當(dāng)然那樣的話,只也能連接相對(duì)應(yīng)的一個(gè)信號(hào))。
[0049]3、在大規(guī)模的組件自繪制程序中,明顯減少程序的代碼長(zhǎng)度,提高程序的編譯速度和運(yùn)行速度。
【權(quán)利要求】
1.wxffidgets框架下大規(guī)模組件自繪制的快速處理方法,其特征在于,包括: 定義事件掛載表類,在所述事件掛載表類的成員變量中保存自繪制組件對(duì)象的指針,事件掛載表類對(duì)象在接收到自繪制的事件時(shí)通過相應(yīng)事件處理函數(shù)將自繪制組件對(duì)象的指針和接收到的事件轉(zhuǎn)發(fā)給對(duì)應(yīng)的圖形繪制槽函數(shù),從而實(shí)現(xiàn)組件的自定義繪制。
2.如權(quán)利要求1所述的wxWidgets框架下大規(guī)模組件自繪制的快速處理方法,其特征在于,所述自繪制事件包括:繪制事件和擦除背景事件;所述相應(yīng)事件處理函數(shù)包括:繪制事件處理函數(shù)和擦除背景事件處理函數(shù);所述對(duì)應(yīng)的圖形繪制槽函數(shù)包括:繪制槽函數(shù)和擦除背景槽函數(shù)。
3.如權(quán)利要求2所述的wxWidgets框架下大規(guī)模組件自繪制的快速處理方法,其特征在于,所述事件掛載表類中有三個(gè)成員變量,其中一個(gè)成員變量保存自繪制組件對(duì)象的指針,另外兩個(gè)成員變量分別為繪制信號(hào)和擦除背景信號(hào)。
4.如權(quán)利要求3所述的wxWidgets框架下大規(guī)模組件自繪制的快速處理方法,其特征在于,所述繪制事件處理函數(shù)用于將繪制事件、自繪制組件對(duì)象的指針添加到繪制信號(hào)中,并將該繪制信號(hào)轉(zhuǎn)發(fā)給繪制槽函數(shù);所述擦除背景事件處理函數(shù)用于將擦除背景事件、自繪制組件對(duì)象的指針添加到擦除背景信號(hào)中,并將該擦除背景信號(hào)轉(zhuǎn)發(fā)給擦除背景槽函數(shù)。
5.如權(quán)利要求4所述的wxWidgets框架下大規(guī)模組件自繪制的快速處理方法,其特征在于,該方法還包括: 在窗口初始化時(shí),掛接事件表對(duì)象,初始化繪制信號(hào)和擦除背景信號(hào),所述事件表對(duì)象為所述事件掛載表類中的對(duì)象實(shí)例。
6.如權(quán)利要求5所述的wxWidgets框架下大規(guī)模組件自繪制的快速處理方法,其特征在于,掛接事件表對(duì)象,初始化繪制信號(hào)和擦除背景信號(hào)的具體方式為: 用自繪制組件的指針作為構(gòu)造函數(shù)的參數(shù),創(chuàng)建一個(gè)事件掛載表類實(shí)例對(duì)象; 將該實(shí)例對(duì)象的繪制信號(hào)連接到繪制槽函數(shù); 將該實(shí)例對(duì)象的擦除背景信號(hào)連接到擦除背景槽函數(shù); 將該實(shí)例對(duì)象壓入自定義繪制組件的事件表?xiàng)V小?br> 7.如權(quán)利要求6所述的wxWidgets框架下大規(guī)模組件自繪制的快速處理方法,其特征在于,該方法還包括: 在窗口銷毀的時(shí)候,自繪制組件對(duì)象彈出已掛接的事件表。
【文檔編號(hào)】G06F9/44GK103544018SQ201310529590
【公開日】2014年1月29日 申請(qǐng)日期:2013年10月31日 優(yōu)先權(quán)日:2013年10月31日
【發(fā)明者】劉貴華, 范海鵬, 文均波 申請(qǐng)人:成都飛魚星科技開發(fā)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
萨迦县| 丰都县| 祁连县| 闵行区| 和静县| 通化市| 邮箱| 贵港市| 汨罗市| 本溪市| 揭东县| 永和县| 廉江市| 中山市| 池州市| 文昌市| 蒲江县| 福建省| 长泰县| 开鲁县| 黔西县| 安乡县| 洛川县| 彭州市| 临泽县| 诏安县| 聂拉木县| 竹山县| 洛川县| 广平县| 阿坝| 成安县| 本溪| 大城县| 博客| 东莞市| 衢州市| 克拉玛依市| 黑水县| 陈巴尔虎旗| 宣城市|