今天晚上在宿舍狠狠得看了一點關乎自定義控制項與gdi+相結合的例子,終於看得懂一點了...原來每個控制項的細節外觀都是一點點畫出來的,也許這需要對色彩有較強的敏感度,但沒事,我有時間慢慢測試。現在不僅要自定義按鈕,同時還要自定義窗體和選單的外觀,有點計畫去模仿qq2009的效果,嘿嘿~不過在自定義控制項方面還是有很多空白,期待明天晚上能有所突破吧~明天晚上就繼續學習,研究窗體的畫圖......
後來我發現原來對自定義控制項每做一步(包括滑鼠動作、鍵盤動作以及控制項自身的任何變化)它都重新畫一遍圖形,都會觸發自定義控制項的onpaint事件(繪製圖形事件),但這也是一瞬間的事,你幾乎感覺不到它的閃爍,除了你事先定義的變化之外。
當然,你所做的每一步動作控制項是不會自己觸發onpaint事件的,這就要你自己去設定。其實很簡單,設定就乙個語句:this.invalidate(); 這句表示強制使當前圖形無效而重新繪製圖形,就會呼叫onpaint事件,而此時你的onpaint事件裡面都是所有的對控制項外觀的重新繪製方法,所以就重新整理了外觀咯。將此語句加在你自定義控制項的事件最後,那就ok了。
大體的機制就是這樣。明白了這個原理,就彷彿學習c#又懂得了物件導向,以後的路子就寬敞多了。從此不會為繪製控制項外觀和消除某一部分的圖形而煩惱,因為外觀一直在改變,重新整理重新繪製,只是你沒察覺而已。
加油,我離我夢心日記本v2.0又近了一步。
自定義控制項 自定義鐘錶
private context mcontext 畫筆 private paint mpaint 控制項的寬 private int mwidth x方向的圓心座標 private int center 鐘錶的半徑 private int mradio 圓環的寬 private int stroke...
學習日誌 自定義控制項
最簡單的自定義控制項,不帶全名空間。直接就在某個view的構造方法裡寫這些個資料,構造方法的上部分其實就是讀取這些個配置資料的大小,然後在最後呼叫某個布局,把剛剛讀取到值給設定進去。package cn.eoe.widget import android.content.context import...
自定義控制項
首先是以下這幾項,attribute defaultproperty指定元件的預設屬性,toolboxdata指定當從ide工具中的 工具箱中拖動自定義控制項時為它生成的預設標記 defaultproperty text toolboxdata mycontrol runat server 上面這些...