csharp扩展trackbar控件显示不同风格

csharp扩展trackbar控件显示不同风格

ID:10914259

大小:56.00 KB

页数:6页

时间:2018-07-08

csharp扩展trackbar控件显示不同风格_第1页
csharp扩展trackbar控件显示不同风格_第2页
csharp扩展trackbar控件显示不同风格_第3页
csharp扩展trackbar控件显示不同风格_第4页
csharp扩展trackbar控件显示不同风格_第5页
资源描述:

《csharp扩展trackbar控件显示不同风格》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C#扩展TrackBar控件显示不同风格1.控件效果2.开发思路TrackBar控件没有像其他控件那样,直接提供给用户重绘的函数,要实现个性化的TrackBar控件直接继承TrackBar控件,利用TrackBar的一些Windows消息,获取TrackBar控件的信息,然后自己完全重绘,这种方法的好处是保留TrackBar控件的标准操作和属性,但是需要比较清楚的了解TrackBar控件的Windows消息。3.源码介绍实现TrackBar控件显示不同风格需要的一些API消息。TrackBar控件

2、相关的一些消息都是以TBM(TackBarMessage)开头的,在TrackBar控件的美化中,主要用到了以下三个消息:l        TBM_GETCHANNELRECT获取轨道的位置和大小。l        TBM_GETTHUMBRECT获取滑块的位置和大小。l        TBM_GETNUMTICS获取刻度的总个数。要获取这些信息,只需要向TrackBar控件发送相应的消息即可,例如需要获取取轨道的位置和大小:SendMessage(hWnd,TBM.TBM_GETCHANNELR

3、ECT,0,reftrackRect)。   接下来就是重绘TrackBar控件了。重绘TrackBar控件,需要重写WndProc函数,在WM_PAINT消息实现重绘就行了:///

///接收消息//////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函数的功能就是获取TrackBar控件的一些信息,然后分别调用四个函数来绘制TrackBar控件:ØOnRenderBackground函数,绘制TrackBar控件的背景。ØOnRenderTick函数,绘制TrackBar控件的刻度。ØOnRenderTrack函数,绘制TrackBar控件的轨道。ØOnRenderThumb函数,绘制TrackBar控件的滑块。这四个函数都是可以重写的,如果想实现不同样式的T

6、rackBar控件,重写这四个函数,可以相应的绘制。DrawTrackBar函数的具体代码: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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。