用TabControl實現新浪微博客戶端樣式的面板

2021-06-07 11:28:50 字數 1546 閱讀 6833

注意:關於tabcontrol的自定義製作方法,請參考此文《一步一步玩控制項:自定義tabcontrol——從山寨safari開始》(以下簡稱《一步》)。

看起來似乎挺不錯,那麼我們試著用一下呢?(動畫)

woo……這部分面板切換好像挺有意思的。

發揮我們的山寨精神,開始分析。

分析

很顯然,這是乙個類似tabcontrol的控制項。當然,具體是什麼我也不知道。who cares?我們只需要做個樣子就行了。現在開始解剖。

拋開漸變背景這些次要內容,可以看到,這個和《一步》一文中仿製safari的標籤幾乎一樣,所以很多**可以直接借鑑過來。

而在上篇文章中沒有實現的面板縮放,雖然簡陋,但這次總算是完成了。使用下面的簡單**。

int count = 1;

while (height > imagelist.imagesize.height + 10 * count)

height = imagelist.imagesize.height;

最後製作出來的效果是這樣的:

注意看滑鼠懸停時圖示變成綠色。由於在控制項內部即使設定了drawmode為ownerdrawfixed,也不會觸發drawitem事件(求指導)。所以本文裡判斷滑鼠劃過哪個標籤是通過對mousemove滑鼠移動實時採點來實現的。對效能有那麼一點點的影響,但我覺得能執行.net fx的機器都可以忽略這點損耗,還能湊合著用,不必擔心。

protected override void onmousemove(mouseeventargs e)

繪製小三角非常簡單,只要在腦子裡過一遍等腰三角形的底、高計算方法即可。

int len = 10;

pointf a = new pointf(rect.x + (float)(rect.width - len) / 2.0f, rect.bottom);

pointf b = new pointf(a.x + len, a.y);

pointf c = new pointf(a.x + len / 2.0f, a.y - (float)math.sqrt(3) * (len / 2.0f) / 2.0f);

pointf points = new pointf ;

g.fillpolygon(

brushes.white,

points

);

自定義tabcontrol實現

using system using system.collections generic using system.drawing using system.linq using system.text using system.windows forms namespace shengxinso...

用Selenium抓取新浪天氣

1 用selenium 系統環境 用虛擬環境實現 一 建立虛擬環境 mkvirtualenv python usr bin python python 2 二 啟用虛擬環境 workon python 2 三 安裝selenium pip install selenium 四 安裝firefox的s...

c 重寫TabControl控制項實現關閉按鈕的方法

1.c 裡面的tabcontrol控制項沒有關閉按鈕,而且很難看。2.有一些已經做好的第三方控制項,但是收費。3.由於我的故障樹推理診斷專案在繪圖的時候允許同時開啟多個文件進行操作,就要實現類似於瀏覽器的多標籤功能,而且要可以關閉。4.所以自己寫乙個類繼承tabcontrol類,然後重寫一些裡面的方...