csharp擴(kuò)展trackbar控件顯示不同風(fēng)格

csharp擴(kuò)展trackbar控件顯示不同風(fēng)格

ID:10914259

大小:56.00 KB

頁數(shù):6頁

時(shí)間:2018-07-08

csharp擴(kuò)展trackbar控件顯示不同風(fēng)格_第1頁
csharp擴(kuò)展trackbar控件顯示不同風(fēng)格_第2頁
csharp擴(kuò)展trackbar控件顯示不同風(fēng)格_第3頁
csharp擴(kuò)展trackbar控件顯示不同風(fēng)格_第4頁
csharp擴(kuò)展trackbar控件顯示不同風(fēng)格_第5頁
資源描述:

《csharp擴(kuò)展trackbar控件顯示不同風(fēng)格》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、C#擴(kuò)展TrackBar控件顯示不同風(fēng)格1.控件效果2.開發(fā)思路TrackBar控件沒有像其他控件那樣,直接提供給用戶重繪的函數(shù),要實(shí)現(xiàn)個(gè)性化的TrackBar控件直接繼承TrackBar控件,利用TrackBar的一些Windows消息,獲取TrackBar控件的信息,然后自己完全重繪,這種方法的好處是保留TrackBar控件的標(biāo)準(zhǔn)操作和屬性,但是需要比較清楚的了解TrackBar控件的Windows消息。3.源碼介紹實(shí)現(xiàn)TrackBar控件顯示不同風(fēng)格需要的一些API消息。TrackBar控件

2、相關(guān)的一些消息都是以TBM(TackBarMessage)開頭的,在TrackBar控件的美化中,主要用到了以下三個(gè)消息:l????????TBM_GETCHANNELRECT獲取軌道的位置和大小。l????????TBM_GETTHUMBRECT獲取滑塊的位置和大小。l????????TBM_GETNUMTICS獲取刻度的總個(gè)數(shù)。要獲取這些信息,只需要向TrackBar控件發(fā)送相應(yīng)的消息即可,例如需要獲取取軌道的位置和大小:SendMessage(hWnd,TBM.TBM_GETCHANNELR

3、ECT,0,reftrackRect)。?  接下來就是重繪TrackBar控件了。重繪TrackBar控件,需要重寫WndProc函數(shù),在WM_PAINT消息實(shí)現(xiàn)重繪就行了:///

///接收消息//////protectedoverridevoidWndProc(refMessagem){switch(m.Msg){caseWM.WM_PAINT:if(!_bPainting){_bPainting=true;P

4、AINTSTRUCTps=newPAINTSTRUCT();NativeMethods.BeginPaint(m.HWnd,refps);DrawTrackBar(m.HWnd);NativeMethods.ValidateRect(m.HWnd,refps.rcPaint);NativeMethods.EndPaint(m.HWnd,refps);_bPainting=false;m.Result=Result.TRUE;}else{base.WndProc(refm);}break;defau

5、lt:base.WndProc(refm);break;}}DrawTrackBar函數(shù)的功能就是獲取TrackBar控件的一些信息,然后分別調(diào)用四個(gè)函數(shù)來繪制TrackBar控件:?OnRenderBackground函數(shù),繪制TrackBar控件的背景。?OnRenderTick函數(shù),繪制TrackBar控件的刻度。?OnRenderTrack函數(shù),繪制TrackBar控件的軌道。?OnRenderThumb函數(shù),繪制TrackBar控件的滑塊。這四個(gè)函數(shù)都是可以重寫的,如果想實(shí)現(xiàn)不同樣式的T

6、rackBar控件,重寫這四個(gè)函數(shù),可以相應(yīng)的繪制。DrawTrackBar函數(shù)的具體代碼:privatevoidDrawTrackBar(IntPtrhWnd){ControlStatestate=ControlState.Normal;boolhorizontal=base.Orientation==Orientation.Horizontal;ImageDctempDc=newImageDc(base.Width,base.Height);TrackRECTtrackRect=newTrac

7、kRECT();TrackRECTthumbRect=newTrackRECT();Graphicsg=Graphics.FromHdc(tempDc.Hdc);NativeMethods.SendMessage(hWnd,TBM.TBM_GETCHANNELRECT,0,reftrackRect);NativeMethods.SendMessage(hWnd,TBM.TBM_GETTHUMBRECT,0,refthumbRect);RectangletrackRectangle=horizont

8、al?trackRect.Rect:Rectangle.FromLTRB(trackRect.Top,trackRect.Left,trackRect.Bottom,trackRect.Right);if(ThumbHovering(thumbRect)){if(Helper.LeftKeyPressed()){state=ControlState.Pressed;}else{state=ControlState.Hover;}}//繪制TrackBar控件的背景using(Pai

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。