CSharp扩展TrackBar控件显示不同风格
csharp高级属性定义
C#自定义控件属性与行为分类:C#2010-10-08 09:49 1337人阅读评论(1) 收藏举报控件应该定义属性而不是公共字段,因为可视化设计器在属性浏览器中显示属性,而不显示字段。
属性就像智能字段。
属性通常具有带访问函数的专用数据成员,在语法上属性被作为类的字段进行访问。
(虽然属性可以具有不同的访问级别,但此处的讨论将重点放在公共访问这种更加常见的情况上。
属性定义通常由以下两部分组成:1、专用数据成员的定义。
[c-sharp]view plaincopy1.private int number = 0;2、使用属性声明语法对公共属性进行的定义。
[c-sharp]view plaincopy1.//该语法通过 get 和 set 访问函数将专用数据成员和公共属性关联起来。
2.public int MyNumber3.{4.get5.{6.return number;7.}8.set9.{10.number = value;11.}12.}虽然属性定义中通常包含专用数据成员,但这不是必需的。
get 访问器不用访问私有数据成员就可以返回值。
get 方法返回系统时间的属性就属于这种情况。
属性启用数据隐藏,访问器方法隐藏属性的实现。
定义属性时需考虑以下重要的注意事项:1、必须将属性应用于定义的属性。
属性用来指定设计器显示属性的方式。
2、如果改变属性将影响控件的外观显示,请从set 访问器中调用Invalidate 方法(从Control 继承该方法)。
Invalidate 随后调用OnPaint 方法,该方法将重新绘制控件。
为提高效率起见,对Invalidate 的多次调用将产生对OnPaint 的一次调用。
3、 .NET Framework 类库为常见数据类型(如整数、小数、布尔值和其他数据)提供了类型转换器。
类型转换器的目的通常是用来提供字符串到数值的转换(从字符串数据转换为其他数据类型)。
常见数据类型与默认类型转换器(将数值转换为字符串,并将字符串转换为相应数据类型)相关联。
C sharp 控件大全-文档资料
注意
可以在属性窗口设置属性,可以在代码中对属性进行设置。例如修改按钮背景 色,可以使用代码btnNew.BackColor=Color.Red; “&”号的使用。作为字符的前缀,通过Alt+相应的字符实现点击按钮的操作。例 如,btnNew.Text = “&Ok”; 一般使用默认的背景和前景控件颜色。
把按钮与DialogResult值DialogResult = DialogResult.OK;
单选按钮
使用RadioButton类封装,通常用来执行多选 一的操作。单选按钮通常分组使用,在一个组 中,只能有一个按钮处于选中状态。 单选按钮属性
除了Button中讨论的一些属性之外,单选按钮还比 较常用的属性还有:
在代码中通过Size属性设置控件大小
可以使用Bounds属性同时设置控件的位置和大小
btnNew.Bounds=new System.Drawing.Rectangle(10,10,100,100);
4)固定控件
使用Anchor属性使控件的位置相对于窗体某一边固定,改变窗体大小 时,控件的位置将会随之改变而保持这个相对距离不变。 使用属性窗口改变Anchor属性时,单击控件周围的上下左右的某个方 框使之变成深灰色,就表示控件相对于窗体这条边的距离固定 System.Windows.Forms命名空间中包含了一个枚举类型 AnchorStyles,其中定义了Anchor属性可以组合的16种不同属性值。 可以在代码中设置Anchor属性。
调整控件
对控件的调整,包括对齐、大小调整和间隔等等。 选中要调整的控件,使用“格式”菜单或是快捷菜单 中的命令或者工具栏上的格式按钮进行调整。在调整 控件的格式时,将按照基准控件对选择的多个控件进 行调整。 使用Ctrl键或Shift键选择多个控件,也可以拖动鼠标 选择一个控件范围,此时最先进入窗体的控件将作为 调整的基准控件。 被选中的控件中,基准控件周围是 白色方框,其他控件周围是黑色方框,如图。
csharpskin 用法
csharpskin 用法
C# Skin是一种用户界面设计工具,用于创建C#(C Sharp)编
程语言的Windows窗体应用程序的外观和样式。
C#是一种由微软开
发的面向对象的编程语言,广泛用于开发Windows应用程序和Web
应用程序。
C# Skin可以帮助开发人员创建具有吸引人外观和用户
友好界面的应用程序,提供了一种简便的方式来自定义控件的外观,包括按钮、文本框、标签等。
使用C# Skin,开发人员可以通过修改控件的外观属性来实现
自定义的界面设计,比如改变按钮的颜色、边框样式、文字样式等。
这使得开发人员可以轻松地创建个性化的应用程序界面,以满足用
户的审美需求和品牌要求。
另外,C# Skin还提供了一些预设的主题和样式,开发人员可
以直接使用这些主题和样式,而无需从头开始设计界面。
这样可以
节省开发时间,并且确保应用程序的外观符合当前的设计趋势。
总的来说,C# Skin是一个用于创建个性化和吸引人的用户界
面的工具,它为C#开发人员提供了丰富的外观定制选项,使他们能
够轻松地打造出令人印象深刻的应用程序界面。
MFC使用的风格
MFC使用的风格当你创建相应的MFC时,使用下列风格。
在大多数情况下,这些风格通常在类的Create函数的dwStyle参数中设置。
按钮风格·BS_AUTOCHECKBOX 与复选框相同,但是当用户选择复选框时,检查标记出现在复选框中,而当用户再一次选择复选框时,检查标记就消失。
·BS_AUTORADIOBUTTON 与单项按钮相同,但是当用户选择它的时候,这个按钮自动加亮显示自己并去掉同组中相同风格的其它单项按钮的选择状态。
·BS_AUTO3STA TE 与三态复选框相同,但是当用户选择该框时它会改变自己的状态。
·BS_CHECKBOX 创建一个小方块,在它的右边显示文本(除非这个风格与BS_LEFTTEXT风格一起使用)。
·BS_DEFPUSHBUTTON 创建一个具有深黑边界的按钮。
用户可以按下ENTER键以选择这个按钮。
这个风格使用户可以快速地选择最相似的选项(缺省选项)。
·BS_GROUPBOX 创建一个矩形区域,其中的按钮是成组的。
与这种风格相关的任何文本将显示在矩形的左上角。
·BS_LEFTTEXT 当与单项按钮风格或复选框风格一起使用时,文本出现在单项按钮或复选框的左边。
·BS_OWNERDRAW 创建一个自画按钮。
当按钮的视觉状态发生改变时,框架调用DrawItem成员函数。
当使用CBitmapButton类的时候,必须设置这个风格。
·BS_PUSHBUTTON 创建一个按钮,当用户选择该按钮时向所有者窗口发送一个WM_COMMAND消息。
·BS_RADIOBUTTON 创建一个小圆形区域,在它的右边显示文本(除非这个风格与BS_LEFTTEXT风格一起使用)。
单项按钮通常成组使用但是只能独占选择。
·BS_3STATE 与复选框类似,但是这个框不仅可以被选中,还可以被变灰。
用VC6扩展CButton类制作风格独特的按钮
用VC6扩展CButton类制作风格独特的按钮一、本文介绍一个CButton的派生类CLinkButton,用此派生类制作的按钮具有以下特点:1、按钮的外观类似静态控件类CStatic 产生的对象。
(参见图一)(图一)2、当鼠标的光标移到按钮上,但并未按下时,光标改变形状,字体改变形状;按钮类似应用在工具条和菜单上的扁平钮效果。
(参见图二)(图二)3、当按钮按下的情形:(参见图三)(图三)二、下面具体描述这种按钮的实现方法和步骤:1.在VC6的IDE环境中,生成一个基于对话框的PROJECT。
2.将对话框资源中按钮的属性页打开,在“Style”标签页中选取按钮的“Owner Draw”(自绘)属性。
3.将光标引入到应用程序的资源中。
4.利用CLASSWIZARD,用CButton为基类,派生一个新类:CLinkButton。
5.在派生类中重载基类CButton的虚函数:virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)之所以要重载这个函数是因为选择了按钮的“Owner Draw”属性后,当按钮的可视行为发生变化时,应用程序的框架要调用这个函数来重新绘制按钮。
6.定制以下的消息处理:afx_msg void OnMouseMove(UINT nFlags, CPoint point);afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);afx_msg void OnTimer(UINT nIDEvent);afx_msg void OnLButtonUp(UINT nFlags, CPoint point);afx_msg void OnLButtonDown(UINT nFlags, CPoint point);afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg BOOL OnEraseBkgnd(CDC* pDC);7.声明类成员变量定义://定义字体变量CFont fUnderline;//定义光标变量HCURSOR hHand;//决定按钮是否按下bool bLBtnDown;//决定鼠标是否在按钮上bool bHighlight;二、派生类CLinkButton的具体实现:1.重载函数DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)。
wordpress代码高亮插件CodeColorer使用方法熊窝窝
wordpress代码高亮插件CodeColorer使用方法熊窝窝CodeColorer是一款wordpress下的代码高亮插件,支持语言广泛,有多种风格可以选择,另外也可以定义自己风格,代码高亮效果见页面:。
本文简单介绍一下CodeColorer的使用方法。
1、安装进入wordpress后,选择左侧:插件–>添加插件进入安装插件页面。
关键词输入CodeColorer,然后点搜索。
在搜索结果里选择第一项:CodeColorer,目前版本是0.9.8,在你的搜索结果里可能不是第一项,不过注意名称全称就是CodeColorer。
点击右侧安装。
弹出新的界面,安装就可以。
2、设置安装后在插件–>已安装下,就会看到我们刚安装的CodeColorer 插件,点击名称下方的启用来启用这个插件。
我们还可以在设置–>CodeColorer页,进行一些个性化的设置,这个很简单,看一下就明白了。
3、使用CodeColorer支持的语言有:abap, actionscript, actionscript3, ada, apache, applescript, apt_sources, asm, asp, autoit, avisynth, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_mac, caddcl, cadlisp, cfdg, cfm, cil, cmake, cobol, cpp-qt, cpp, csharp, css, d, dcs, delphi, diff, div, dos, dot, eiffel, email, erlang, fo, fortran, freebasic, genero, gettext, glsl, gml, gnuplot, groovy, haskell, hq9plus, html4strict, idl, ini, inno, intercal, io, java, java5, javascript, kixtart, klonec, klonecpp, latex, lisp, locobasic, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, make, matlab, mirc, modula3, mpasm, mxml, mysql, nsis, oberon2, objc, ocaml-brief, ocaml, oobas, oracle11, oracle8, pascal, per, perl, php-brief, php, pic16, pixelbender, plsql, povray,powershell, progress, prolog, properties, providex, python, qbasic, rails, rebol, reg, robots, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, sql, tcl, teraterm, text, thinbasic, tsql, typoscript, vb, vbnet, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xml, xorg_conf, xpp, yaml, z80.使用时,将编辑器切换到HTML模式,而不是可视化。
MFC-控件风格
VC中常用控件风格样式介绍本文将要介绍的Windows控件指的是Windows系统预定义的标准控件,如按钮控件、编辑控件和列表控件等。
这些预定义控件实际是一种特殊的子窗口,主要供用户同应用程序的交互之用。
和普通窗口类一样,每一个预定义控件也都是由所属的窗口类规定了自身的外观属性和具有的功能。
Windows系统通过预定义的方式提供了一些标准控件的窗口类名,在程序设计时只需通过调用CreateWindow()函数或CreateWindowEx()函数并将预定义的窗口类名作为参数传入即可创建出相应的控件。
当用户通过屏幕对象同控件进行交互操作时,控件将以"通知消息"的形式向父窗口发送WM_COMMAND通知消息,消息的wParam参数含有控制标识,在lPamam参数的高位字和低位字中分别含有通知码和控制句柄,由父窗口完成对消息的响应处理。
按钮类控件:按钮类控件是窗口类名被系统预定义为BUTTON的一类控件,该类控件具有十余种不同的窗口风格,包含了普通的下压式按钮、单选按钮、复选按钮和分组框等多种常用的按钮形式。
具体情况列表如下:按钮风格说明BS_AUTOCHECKBOX 同复选按钮类似,点击一下选中,再次点击取消。
BS_AUTORADIOBUTTON 同单选按钮类似,点击后选中标志将从同组的其他单选按钮处移到当前选项。
BS_AUTO3STATE 同三态复选按钮类似,只是在用户点击后改变状态。
BS_CHECKBOX 复选按钮BS_DEFPUSHBUTTON 下压按钮,具有较黑的边框。
BS_GROUPBOX 分组框BS_LEFTTEXT 同单选按钮或复选按钮配合使用,标题将显示在左侧。
BS_OWNERDRAW 可创建一个拥有者自绘按钮。
BS_PUSHBUTTON 普通下压按钮BS_RADIOBUTTON 单选按钮BS_3STATE 三态复选按钮以上按钮风格通常需要同窗口风格共同使用,由CreateWindow()函数或MFC的CButton类成员函数Create()完成对按钮的创建:// 动态创建按钮for (int i = 0; i < 9; i++){m_ctrButton.Create("BUTTON", WS_VISIBLE | WS_CHILD | WS_BORDER | STYLE, CRect(10 + 110 * i, 10, 100 + 110 * i, 40), this, IDC_BUTTON1 + i);}如果需要处理按钮发送给其父窗口的消息,可以在进行消息响应的类实现中添加一个如下形式的消息映射入口和相应的消息处理函数:ON_Notification(id, memberFxn ) 其中,id为发送通知消息的按钮ID号,memberFxn为消息处理函数。
CSharp扩展TrackBar控件显示不同风格
CSharp扩展TrackBar控件显示不同风格C# 扩展TrackBar控件显示不同风格 ,. 控件效果,. 开发思路TrackBar控件没有像其他控件那样,直接提供给用户重绘的函数,要实现个性化的TrackBar控件直接继承TrackBar控件,利用TrackBar的一些Windows消息,获取TrackBar控件的信息,然后自己完全重绘,这种方法的好处是保留TrackBar控件的标准操作和属性,但是需要比较清楚的了解TrackBar控件的Windows消息。
,. 源码介绍实现TrackBar控件显示不同风格需要的一些API消息。
TrackBar控件相关的一些消息都是以TBM(TackBar Message)开头的,在TrackBar控件的美化中,主要用到了以下三个消息:, TBM_GETCHANNELRECT 获取轨道的位置和大小。
, TBM_GETTHUMBRECT 获取滑块的位置和大小。
, TBM_GETNUMTICS 获取刻度的总个数。
要获取这些信息,只需要向TrackBar控件发送相应的消息即可,例如需要获取取轨道的位置和大小:SendMessage(hWnd, TBM.TBM_GETCHANNELRECT, 0, ref trackRect)。
接下来就是重绘TrackBar控件了。
重绘TrackBar控件,需要重写WndProc函数,在WM_PAINT消息实现重绘就行了:/// <summary>/// 接收消息/// </summary>/// <param name="m"></param>protected override void WndProc(ref Message m){switch (m.Msg){case WM.WM_PAINT:if (!_bPainting){_bPainting = true;PAINTSTRUCT ps = new PAINTSTRUCT(); NativeMethods.BeginPaint(m.HWnd, ref ps); DrawTrackBar(m.HWnd);NativeMethods.ValidateRect(m.HWnd, ref ps.rcPaint); NativeMethods.EndPaint(m.HWnd, ref ps);_bPainting = false;m.Result = Result.TRUE;}else{base.WndProc(ref m);}break;default:base.WndProc(ref m);break;}}DrawTrackBar函数的功能就是获取TrackBar控件的一些信息,然后分别调用四个函数来绘制TrackBar控件:, OnRenderBackground函数,绘制TrackBar控件的背景。
Csharp控件详解
Csharp控件详解C#控件一览表前所未有的震撼(太详细了)C#控件及常用设计整理1、窗体1、常用属性(1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。
(2)WindowState属性:用来获取或设置窗体的窗口状态。
取值有三种:Normal(窗体正常显示)、Minimized(窗体以最小化形式显示)和Ma某imized(窗体以最大化形式显示)。
(3)StartPoition属性:用来获取或设置运行时窗体的起始位置。
(4)Te某t属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。
(5)Width属性:用来获取或设置窗体的宽度。
(6)Height属性:用来获取或设置窗体的高度。
(7)Left属性:用来获取或设置窗体的左边缘的某坐标(以像素为单位)。
(8)Top属性:用来获取或设置窗体的上边缘的y坐标(以像素为单位)。
(9)ControlBo某属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。
值为true时将显示控制框,值为fale时不显示控制框。
(10)Ma某imizeBo某属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。
值为true时显示最大化按钮,值为fale时不显示最大化按钮。
(11)MinimizeBo某属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。
值为true时显示最小化按钮,值为fale时不显示最小化按钮。
(12)AcceptButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按Enter键时就相当于单击了窗体上的该按钮。
(13)CancelButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按Ec键时就相当于单击了窗体上的该按钮。
(14)Modal属性:该属性用来设置窗体是否为有模式显示窗体。
如果有模式地显示该窗体,该属性值为true;否则为fale。
C Sharp公共控件的使用
控件的使用P.S. 本章讲解常用控件的使用方法,将不对算法和语法加以解释。
控件控件是视窗交互的工具。
控件是一种特殊的类,所有控件都继承自System.Windows.Forms.Control类。
这里Control就叫做控件的基类,控件就是Control的派生类。
一个类从基类继承,就拥有基类的所有成员(包括:变量(亦称字段),属性,函数(函数亦称方法),事件,运算符)。
类之间通过继承关系保证了派生类拥有需要的方法或字以上是最常用的成员,便于查找,完整列表参考/zh-cn/library/system.windows.forms.control_members.aspx静态文本控件Label:表示控件的文本标签,并提供对访问键的支持。
它是最简单的控件,用于显示文字,其实它不一定是静态的,显示的文字可以随时通过Text 属性更改。
常用的属性是Font、BackColor、ForeColor、Text、Location、Size、Visible。
超链接文本控件LinkLabel:Windows 窗体LinkLabel控件使您能够向Windows 窗体应用程序添加Web 样式的链接。
一切可以使用Label控件的地方都可以使用LinkLabel控件;还可以将文本的一部分设置为指向某个对象或网页的链接。
与Label类似,提供了类似超链接的文字样式,Label也可以设置Click事件,但LinkLabel更容易让人发现它被单击有不同的作用(由于它像超链接的样子)。
也可以用作选项,【例】:1新建工程,设计界面如图:2修改LinkLabel控件名字:linkOption2.1选择2.2修改(Name)属性2.3改为linkOption2.3.1P.S.以后就用linkOption表示这个控件,在C#代码中控件实例实质上是一个变量,变量类型就是控件的类。
这就是这个控件的变量名。
由于默认的名称linkLabel1没有实际意义,编程时通常先修改其名字,使其好记。
CSharp扩展方法和扩展属性
CSharp扩展方法扩展方法是实现新增类方法同时不改变类名称的一种技术。
可以部分的替代原本必须继承类才能够实现的功能。
但是,目前还不能扩展类的属性,也不能在不继承类的情况下而直接修改类方法。
例如在 MVC Web Application中的,我们想快速了解某个Action上是否有某个Attribute. 那我们可以使用这样的扩展方法:/// <summary>/// Gets the method./// </summary>/// <typeparam name="T">Type</typeparam>/// <param name="instance">The instance.</param>/// <param name="methodSelector">The method selector.</param>/// <returns>MethodInfo</returns>public static MethodInfo GetMethod<T>(this T instance, Expression<Func<T, object>> methodSelector){// it is not work all methodreturn ((MethodCallExpression)).Method;}/// <summary>/// Gets the method./// </summary>/// <typeparam name="T"></typeparam>/// <param name="instance">The instance.</param>/// <param name="methodSelector">The method selector.</param>/// <returns>MethodInfo</returns>public static MethodInfo GetMethod<T>(this T instance,Expression<Action<T>> methodSelector){return ((MethodCallExpression)).Method;}/// <summary>/// Determines whether the specified member has attribute./// </summary>/// <typeparam name="TAttribute">The type of the attribute.</typeparam> /// <param name="member">The member.</param>/// <returns>/// <c>true</c> if the specified member has attribute; otherwise,<c>false</c>./// </returns>public static bool HasAttribute<TAttribute>(this MemberInfo member)where TAttribute : Attribute{return GetAttributes<TAttribute>(member).Length > 0;}/// <summary>/// Gets the attributes./// </summary>/// <typeparam name="TAttribute">The type of the attribute.</typeparam> /// <param name="member">The member.</param>/// <returns></returns>public static TAttribute[] GetAttributes<TAttribute>(this MemberInfo member)where TAttribute : Attribute{var attributes =(typeof(TAttribute), true);return (TAttribute[])attributes;}如何使用,请看下面的代码,我们使用lambda表达式获取某个方法,然后获取其上面的Attribute:[Fact]public void GetHttpPostAttributeFromCreateAction(){// Arrangevar controller = GetEmployeeController(new MemeoryEmployeeBoService());//Actbool hasPostAttribute =(e => (new Employee())).HasAttribute<HttpPostAttribute>();// AssertAssert.True(hasPostAttribute);}扩展方法的实现1.首先,我们需要在项目中添加自己的一个类型,此处为ProjectExt,其中的方法与之前定义的方法大致上无区别,只是在方法中第一个参数前面添加了this关键字,this关键字必须是在方法参数中第一个参数的前面,不可以移位。
csharp单选框分组
csharp单选框分组C#是一种面向对象的编程语言,它提供了许多强大的功能来创建各种应用程序。
在C#中,单选框(RadioButton)是一种常见的用户界面控件,用于在一组选项中选择一个选项。
为了更好地组织和管理单选框,可以将它们分组。
## 1. 单选框的基本概念单选框是一种用户界面控件,通常以圆形按钮的形式呈现。
在一组单选框中,只能选择其中的一个选项。
当用户选择一个单选框时,其他单选框会自动取消选择。
## 2. 单选框的使用场景单选框适用于许多场景,例如:- 在表单中选择性别:男、女、其他- 在设置界面中选择语言:英语、中文、法语等- 在调查问卷中选择答案:非常同意、同意、不同意等## 3. 创建单个单选框要创建一个单个的单选框,在C#中可以使用RadioButton类。
以下是创建和使用一个简单的单选框的步骤:### 步骤1:添加命名空间在代码文件的顶部添加以下命名空间:```csharpusing System.Windows.Forms;```### 步骤2:创建窗体并添加控件在窗体的构造函数或加载事件中创建一个单选框,并将其添加到窗体上:```csharpRadioButton radioButton = new RadioButton(); radioButton.Text = "选项1";this.Controls.Add(radioButton);```### 步骤3:处理选择事件可以为单选框的CheckedChanged事件添加处理程序,以便在选择发生更改时执行特定的操作:```csharpradioButton.CheckedChanged += newEventHandler(radioButton_CheckedChanged);private void radioButton_CheckedChanged(object sender, EventArgs e){// 处理选择事件}```## 4. 创建多个单选框并分组如果需要在同一个窗体中创建多个单选框,并将它们分组,可以使用GroupBox类。
c#控件dotnetbar的用法
DotNetBar介绍DotNetBar是一款带有51个Windows Form 控件的工具箱,使开发人员可以轻而易举地创建出专业美观的Windows Form应用程序用户界面,控件全部采用C#编写,引入了全部Office 2007 style Ribbon控件、Office 2003 样式、支持Windows XP主题等。
DotNetBar for WindowsForms 8.8 全面支持Office 2010 风格的后台应用程序菜单。
具体功能:●为Office 2007 Ribbon 控件提供了Black,Silver ,Blue三种配色方案,支持Windows VistaGlass、tab groups, ribbon hyper menus, multi-level KeyTips, complete Quick Access Toolbar (QAT),支持Ribbon Menu Tabs●Office 2007 Ribbon Bar 控件具有组合按钮,弹出按钮等●Office 2007 Super Tooltips控件具有18种颜色样式●支持停靠窗口自动隐藏,灵活的视图分割●支持具有Office 2007, 2005, Office 2003/XP/2000,样式的Hyper-Menus 和工具条●支持具有Office 2007和2003样式的导航面板,支持扩展和收缩●Tab Container控件具有9种不同的样式,16种配色方案,支持颜色自定制●Explorer Bar控件使程序员可以创建出具有XP样式的Explorer Bar●Tab-Strip控件具有九种预定义的样式,支持tabbed MDI ,颜色自定义●Side Bar 控件具有两种布局类型、5种不同的样式、18种预定义颜色方案,支持拖拉功能●BubbleBar 是一个灵活的toolbar控件●Stand alone Bar可以用于创建具有Office 2007 的状态条●可扩展的Splitter控件●可展开的Panel控件,●多功能的Panel控件●Balloon/Alert控件用于传达一些重要的信息给最终用户●Wizard控件支持Wizard97规范,可以创建安装文件。
trackbar_class用法
trackbar_class用法Trackbar是OpenCV库中的一个类,它提供了一种方便的方式来创建、控制和调整图像处理过程中的参数。
在本文中,我们将详细介绍trackbar_class的用法,并逐步解答与其相关的问题。
一、trackbar_class简介Trackbar是OpenCV库中的一个类,它用于创建一个可以在图像窗口中显示的滑动条。
这个滑动条可以通过移动滑块来调整一些参数,从而改变图像处理的效果。
在OpenCV中,trackbar_class用于创建一个可以滚动的条形控件(trackbar)。
通过拖动滑块来调整指定参数的值,并实时反映在图像上。
这种交互式的方式可以帮助我们更好地调整图像处理算法的效果。
二、trackbar_class的用法使用trackbar_class非常简单,只需要几个步骤即可完成。
下面是使用trackbar_class的基本步骤:1. 导入必要的库首先,我们需要导入OpenCV库和其他所需的库。
在Python中,我们可以使用以下代码导入OpenCV库:pythonimport cv22. 创建窗口在创建滑动条之前,我们需要创建一个窗口来显示图像和滑动条。
可以使用以下代码来创建窗口:pythondWindow('image')在这里,我们创建了一个名为"image"的窗口。
3. 创建滑动条接下来,我们使用trackbar_class来创建滑动条。
可以使用以下代码来创建滑动条:pythondef on_trackbar(value):# 滑动条回调函数cv2.createTrackbar('trackbar_name', 'image', initial_value,max_value, on_trackbar)在这里,'trackbar_name'是滑动条的名称,'image'是滑动条所在的窗口的名称,initial_value是滑动条的初始值,max_value是滑动条的最大值。
TrackBar组件的使用方法
TrackBar组件的使用方法
TrackBar组件位于组件板的Win 页中该组件与ScrollBar组件相似也有一个滚动条且两侧可以显示刻度但两端无按钮如图上个组件所示程序运行时可用鼠标拖动滚动条中的滑块位置来改变Position的值TrackBar组件的Min Max和Position属性与ScrollBar组件相同中国自学编程网整理发布其他属性如下
()TickMarks属性
TickMarks属性用于指出刻度出现的位置取值为TmBottom Right(右边或下边) TmTopLefl(左边或上边) TmBoth(两侧)默认值为TmBottomRight
()Frenquency属性
Frenquency属性用于指定TrackBar的刻度间隔默认值为
()LineSize属性
LineSize属性用于设定按下PageUp与PageDown键后Position 的变化量默认值为
()Orientation属性
该属性用于设定TrackBar的摆放方向属性值为trHorizontal时水平摆放属性值为trVerti—cal时垂直摆放
()SelStart和SelEnd属性
SelStart和SelEnd属性用于定义TrackBar的选择区域在TrackBar定义区域内用深色表示
()SliderVisible属性
SliderVisible属性为True时滑块可见为False时滑块不可见
lishixinzhi/Article/program/Delphi/201311/24669。
VCMFC工具栏(CToolBar)控件天心软件工作室
VCMFC工具栏(CToolBar)控件天心软件工作室工具栏工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建,如CButton按钮类,现举一个用代码创建按钮控件并显示在窗口里的例子。
CButton类的Create成员函数可以创建一个按钮控件,这个函数的格式如下:BOOL CButton::Create(LPCTSTR lpszCaption,//按钮显示的文本DWORD dwStyle,//按钮样式const RECT& rect,//按钮控件显示的区域(大小)相对于父窗口CWnd* pParentWnd,//按钮的父窗口(按钮属于哪个窗口)UINT nID//指明按钮控件ID号);这个函数的第二个参数dwStyle是按钮控件的样式,也就是在可视化添加按钮控件时,右击按钮控件,选择属性,之后会弹出一个对话框,这个对话框有一个样式的选项,该参数即对应这个样式。
好了,了解了上面这些我们就来动态创建一个按钮吧,首先在对应话类里添加一个按钮类成员变量CButton m_Button;然后在对话框编辑区里给对话框添加一个按钮控件(单击这个按钮创建按钮控件),然后添加这个按钮控件单击消息处理函数,并在函数添加以下语句:RECT ButtonRect;//按钮控件显示的区域(大小)相对于父窗口ButtonRect.left=10;ButtonRect.top=10;ButtonRect.right=80;ButtonRect.bottom=30;m_Button.Create(“动态创建”,WS_CHILD,ButtonRect,this,1115);m_Button.ShowWindow(SW_SHOW);//显示按钮控件知道了怎样动态创建按钮控件,我们就来创建工具栏控件。
U8开发之工具栏控件
U8工具栏控件摘要工具栏<Toolbar>是U8应用程序常用的界面元素.把菜单中常用的命令做成按钮安排在工具条中,配上适当的图标符号和文本提示,能够极大地方便用户.U8产品开发尤其是前台UI开发中,工具栏控件和窗体一样是系统展现不可缺少的一部分.在早期U8产品开发过程中大量使用了微软的MSToolbar,但是随着U8ERP产品开发的精细化、专业化,微软的MSToolbar在界面设计和程序开发中暴露出了诸如界面图标配置不灵活、不支持多级菜单、不适应复杂应用场景、对多语的支持不够完善等开发问题.为了弥补这些不足,并且兼容之前的产品,U8平台提供了工具栏控件.在V11版本中,又对工具栏在UE效果上做了进一步改进,采用Ribbon工具栏风格,形成了现在U8产品的工具栏效果.什么是工具栏?Ribbon风格:Ribbon是一种以皮肤与标签页为架构的用户界面<User Interface>,原先出现在Microsoft Office 2007 与2010 的Word、Excel和Powerpoint 等组件中,后来也被运用到Windows 7 的一些附加组件等其它软件中,如画图和写字板,以与Windows 8 中的资源管理器.它是一个收藏了命令按钮和图标的皮肤.它把命令组织成一组"标签",每一组包含了相关的命令.每一个应用程序都有一个不同的标签组,展示了程序所提供的功能.在每个标签里,各种的相关的选项被组在一起.设计Ribbon的目的是为了使应用程序的功能更加易于发现和使用,减少了点击鼠标的次数.门户Toolbar:从门户树形菜单或全景式菜单打开的选项卡式窗体〔即嵌入门户的窗体〕中包含的工具栏称为门户Toolbar.如下图所示:图门户Toolbar示意图由于门户工具栏是U8各产品较常见且核心的内容,所以有必要介绍门户工具栏内部的一些概念,包括排版组、分组、按钮样式等.以下分别介绍:按钮分组:在门户Toolbar上,两个分割线之间的区域即为一个按钮分组.图按钮分组示意图排版组:每个纵向排列的按钮集合即为一个排版组,排版组形式可能表现为一个大按钮、或者两个小按钮、三个小按钮.如下图:〔一个大按钮〕〔两个小按钮〕〔三个小按钮〕按钮样式主要表现为普通按钮、下拉菜单〔带设置默认功能〕、下拉菜单〔不带设置默认功能、Toggle按钮、Combobox类型按钮.〔Toggle按钮〕〔普通按钮〕〔下拉菜单〔不带设置默认功能〕〕〔下拉菜单〔带设置默认功能〕〕〔显示模板信息的按钮为Combobox类型按钮〕由于单据是U8产品常见且核心的功能,所以单据上除了有门户Toolbar以外,也包含自己的Toolbar,方便用户能够快速定位功能.单据的Toolbar包括表头Toolbar和表体Toolbar.表头Toolbar:表头工具栏并不是一个完整的工具栏,表头工具栏只是包含刷新、翻页〔首页、前页、后页、末页〕、高级等按钮.其他的是单据表头的一部分,是单据控件的内部功能.如下图所示:图表头Toolbar示意图表体Toolbar:表体工具栏是指单据表体顶部的工具栏,主要是针对表体的一些便捷操作的功能集合,方便用户浏览、操作表体数据时进行本单据的个性化操作.如下图所示:图表体Toolbar示意图模态窗体Toolbar:非嵌入门户的窗体上的Toolbar工具栏.这种窗体上的按钮样式相对门户Toolbar要少,没有Combobox类型、没有排版组和大小按钮的概念.U890、U810.0、U810.1版本的按钮样式和U811.0模态窗体Toolbar的按钮样式相同.图模态窗体Toolbar目标本文主要介绍工具栏控件的基础知识,应用过程与相关注意事项,方便各类U8产品开发人员更好的使用工具栏控件,更高效的开发产品.工具栏可以做什么?工具栏是U8应用程序开发中必不可少的组件,工具栏支持多语、支持键盘快捷键、支持多级菜单的展示和运用、支持设置图标和文字、集成MSToolbar方便业务组快速开发同时保持程序的向后兼容性.1.V10.1与之前版本工具栏特性由于V11.0版本只是在界面UE效果和工具栏构建方式上做了修改,其他内容均和之前版本相似,所以这里不做重点的讲解,这些版本的样式和ssss相同.使用方式将在[如何使用工具栏组件]中介绍.2.V11特性a)支持流式布局➢没有权限的按钮不显示,相同排版组内其余按钮自动重新排版.排版组可以定义小按钮最大行数.当出现空白列时,后面的按钮自动向前平移.➢一个排版组内按钮因授权问题导致只有一个小按钮时自动升级为大按钮.➢相关系统没有启用而导致的不可用功能按钮不显示,如工作流没有启用,提交按钮不显示.➢有权限但当前单据状态或者操作状态下不可用按钮置灰.b)支持多行显示图多行显示示意图➢工具栏高度为三行横向排版小按钮高度.➢大按钮图标和标签采用上下排版,按钮占整个工具栏可用高度〔三行小按钮〕.➢小按钮图标和标签左右排版,当一列有三个小按钮时工具栏可用高度三等分、纵向中对齐,当一列有两个小按钮时工具栏可用高度二等分、纵向中对齐,当一列只有一个小按钮时工具栏可用高度二等分,纵向中对齐,按钮放在第一行.➢当相邻有多个小按钮时,可以把它们划分为一个或者多个排版组,每个排版组可以指定排版行数.c)支持分组➢按钮支持按分组排列、排版组信息d)多按钮样式➢普通小按钮、下拉菜单小按钮、有默认功能的下拉菜单小按钮➢普通大按钮、下拉菜单大按钮、有默认功能的下拉菜单大按钮3.数据字典a)V11.0数据字典b)二次开发数据字典如何使用工具栏控件?1.老版本应用工具栏控件〔890/10.0/10.1〕首先引用MSToolbar、UFToolbar组件一定要注意,引用MSToolbar要引用Microsoft Windows Common Controls 6.0<sp6>也就是MSComctl.ocx,不要引用MSComCt2.ocx然后在窗体上增加MSToolbar、UFToolbar、ImageList设计MSToolbar得到的效果如下:2.V11.0版本应用工具栏控件在V11.0版本中,工具栏组件为了能够规范业务组的编程并配合整体UE设计效果,做了两个大的调整:Ribbon风格、UE效果和支持数据库预置按钮的方式.对于UE和Ribbon风格已经在[什么是工具栏]中做了介绍,在此不再赘述.下面讲解如何通过数据库预置的方式设计U8的工具栏.a)预置数据数据表结构和字段说明详见[工具栏可以做什么]中的V11.0数据字典.如果想结合数据字典了解工具栏的具体预置方法,可以执行下面的脚本,参考采购订单的预置内容.下面是预置数据示例b)在所在窗体上引用相关组件此过程和老版本应用工具栏控件执行窗体上引用相关组件相同,可参考上一节,再此不再赘述.c)执行如下代码即可加载工具栏组件d)按钮图片名遵循的约定V11.0中有一点和老版本应用工具栏控件不同,老版本应用工具栏控件,如果希望按钮是带图标的,则必须有ImageList控件,该控件加载按钮的相应图标.在数据库中通过AA_FormButtons_Base和AA_FormButtonMenus_Base表的cPic字段体现,具体可以参考数据字典.只需要预置文件名即可,不要带路径和扩展名.门户Toolbar区域的按钮分大按钮和小按钮,图片分别存在于U8soft\icons\BigIcon和U8soft\icons\SmallIcon\目录下,要预置数据可去相关文件夹寻找对应的图片名.表头Toolbar区域的图片名是固定的,分别如下高级按钮无图片,可不预置定位结果与历史按钮图片是固定的,系统默认的,无需预置该按钮刷新按钮图片名:Refresh首页按钮图片名:first page上一页按钮图片名:Previous Page下一页按钮图片名:Next page末页按钮图片名:Last page表体Toolbar区域均不包含图片,无需图片名特别要说明的是工具栏组件不仅支持数据库预置按钮的方式,为了保持向后的兼容性,仍然支持该章节第一部分老版本应用工具栏控件的方式,详见1、老版本应用工具栏控件.3.二次开发应用工具栏控件a)检查所在窗体是否支持二次开发工具栏组件原则上都可以支持二次开发行为,但由于某些界面没有这方面的需求,所以并没有支持二次开发功能在一个界面上同时按住Ctrl+Shift并点击任何一个按钮,这样你所需要的信息将被Copy 到写字板<附件中的写字板>上,〔注意不是记事本notepad〕.b)数据预置相关数据结构在二次开发数据字典的AA_CustomerButton表中,可查阅相关内容.c)脚本预置示例d)对外接口4.复杂场景应用工具栏控件a)老版本升级到V11具体方式和V11.0版本应用工具栏控件相同.可以参考[如何使用工具栏控件]中V11.0版本应用工具栏控件章节.下面主要说明老版本升级到V11需要注意的几个方面:bobox类型按钮〔显示模板、打印模板按钮〕显示模板、打印模板按钮是Combobox类型的,预置数据时iToolbarStyle字段要预置成55.Combobox类型按钮需要在窗体上增加一个Combobox的VB控件,然后初始化时需要将该控件直接作为Tag对象赋值给Toolbar按钮的Tag不要再给MSToolbar设计按钮,按钮直接从数据库加载,不要再给MSToolbar 赋ImageList,按钮图片都从数据库加载,不再从ImageList中取如果是单据界面,需要给单据控件赋Otoolbar对象Set oVoucher.Otoolbar=UFToolbar无论是单据界面还是列表界面都要给UFToolbar调用SetFormInfob)老版本不升级仍然在V11中使用对于这种情况.之前开发的按钮应该是自己在窗体上加MSToolbar和UFToolbar,然后直接在MSToolbar上〔设计时〕增加按钮,调用UFToolbar.SetToolbar MSToolbar来把MSToolbar上按钮加载到界面上显示的UFToolbar上.之后可以改变MSToolbar上对应按钮的状态,Enable 或Visible.然后调用UFToolbar.RefreshEnable或UFToolbar.RefreshVisible来改变UFToolbar上对应按钮状态.如果不想迁移到新的方案〔即把按钮或菜单的数据预置到对应数据库表中的方案〕.可能在按钮状态变换的时候会有一些问题,这时候需要调用UFToolbar.EndRefresh〔即在原来调用RefreshVisible和RefreshEnable的地方调用EndRefresh〕i.Tag对象约定MsToolbar的Tag对象在V11中不再被二次开发和业务组开发使用,请不用随意给按钮或者Menu的Tag赋字符串值,如果要赋值,请构造Tag对象赋值〔不建议使用〕老版本不升级到11.0还想在11.0中使用,一般按钮不会出现问题,但是按钮的下拉菜单可能会有问题〔可能会出现菜单点不出来的情况〕.对于这种情况就需要在构造完MSToolbar 之后,UFToolbar.SetToolbar之前构造每个菜单的Tag属性.代码示例如下但是这种情况下可能UE效果不能达到11.0的效果要求,其他的没有影响.c)多单据控件界面Toolbar方案比如这个设备管理的单子,我们拿一个按钮来说这是设备管理的定位按钮,设备管理上有三个单据控件表头是一个单据控件〔只有表头项〕,表体是两个单据控件,分别记录文档和设备参数.因为表头没有排序定位的按钮,所以可以看到上面预置的数据里面字段iVoucherCtrlIndex分别是1和2,没有0的.〔单据控件上有个属性叫Key.如果一个窗体只有一个单据控件,则Key取默认值0即可.不用额外给单据控件赋Key属性.如果界面有多个单据控件,则必须给每个单据控件赋Key属性.这个界面上表头的单据控件的Key=0,表体文档的那个单据控件的Key=1,设备参数那个单据控件的Key=2〕数据库里面的iVoucherCtrlIndex对应着各个单据控件的Key.将来单据控件上的按钮就靠这个key和cToolbarPosIndex<P/T/B>这两个参数来区分.预置完成数据之后在界面上可以填充数据库数据到窗体的UFToolbar上调用UFToolbar的Settoolbarfromdata方法.可参考[如何使用工具栏控件]中V11.0版本应。
createtrackbar函数
createtrackbar函数createTrackbar函数是OpenCV中的一个重要函数,用于创建一个滑动条,可以方便地调节图像处理中的参数。
本文将详细介绍createTrackbar函数的用法和相关注意事项,帮助读者更好地理解和应用这个函数。
createTrackbar函数的基本语法如下:createTrackbar(trackbarName, windowName, value, count, onChange)其中,trackbarName是滑动条的名称,windowName是滑动条所在的窗口名称,value是滑动条的初始值,count是滑动条的最大值(最小值默认为0),onChange是回调函数,用于处理滑动条数值的改变。
在使用createTrackbar函数之前,我们需要首先创建一个窗口,并在窗口中显示一副图像。
可以使用函数namedWindow和imshow 来实现。
例如:namedWindow("image", WINDOW_NORMAL);imshow("image", image);接下来,我们可以调用createTrackbar函数来创建一个滑动条。
例如:createTrackbar("Threshold", "image", &thresholdValue, 255,onThresholdChange);这里创建了一个名为"Threshold"的滑动条,它显示在名为"image"的窗口中。
滑动条的初始值为thresholdValue,最大值为255。
当滑动条的数值发生改变时,会调用函数onThresholdChange来处理。
在回调函数onThresholdChange中,我们可以根据滑动条的数值来调整图像处理的参数。
例如,可以使用函数threshold来进行二值化处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C# 扩展TrackBar控件显示不同风格
1. 控件效果
2. 开发思路
TrackBar控件没有像其他控件那样,直接提供给用户重绘的函数,要实现个性化的TrackBar控件直接继承TrackBar控件,利用TrackBar的一些Windows消息,获取TrackBar 控件的信息,然后自己完全重绘,这种方法的好处是保留TrackBar控件的标准操作和属性,但是需要比较清楚的了解TrackBar控件的Windows消息。
3. 源码介绍
实现TrackBar控件显示不同风格需要的一些API消息。
TrackBar控件相关的一些消息都是以TBM(TackBar Message)开头的,在TrackBar控件的美化中,主要用到了以下三个消息:
●TBM_GETCHANNELRECT 获取轨道的位置和大小。
●TBM_GETTHUMBRECT 获取滑块的位置和大小。
●TBM_GETNUMTICS 获取刻度的总个数。
要获取这些信息,只需要向TrackBar控件发送相应的消息即可,例如需要获取取轨道的位置和大小:SendMessage(hWnd, TBM.TBM_GETCHANNELRECT, 0, ref trackRect)。
接下来就是重绘TrackBar控件了。
重绘TrackBar控件,需要重写WndProc函数,在WM_PAINT消息实现重绘就行了:
///<summary>
///接收消息
///</summary>
///<param name="m"></param>
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM.WM_PAINT:
if (!_bPainting)
{
_bPainting = true;
PAINTSTRUCT ps = new PAINTSTRUCT();
NativeMethods.BeginPaint(m.HWnd, ref ps);
DrawTrackBar(m.HWnd);
NativeMethods.ValidateRect(m.HWnd, ref ps.rcPaint);
NativeMethods.EndPaint(m.HWnd, ref ps);
_bPainting = false;
m.Result = Result.TRUE;
}
else
{
base.WndProc(ref m);
}
break;
default:
base.WndProc(ref m);
break;
}
}
DrawTrackBar函数的功能就是获取TrackBar控件的一些信息,然后分别调用四个函数来绘制TrackBar控件:
OnRenderBackground函数,绘制TrackBar控件的背景。
OnRenderTick函数,绘制TrackBar控件的刻度。
OnRenderTrack函数,绘制TrackBar控件的轨道。
OnRenderThumb函数,绘制TrackBar控件的滑块。
这四个函数都是可以重写的,如果想实现不同样式的TrackBar控件,重写这四个函数,可以相应的绘制。
DrawTrackBar函数的具体代码:
private void DrawTrackBar(IntPtr hWnd)
{
ControlState state = ControlState.Normal;
bool horizontal = base.Orientation == Orientation.Horizontal;
ImageDc tempDc = new ImageDc(base.Width, base.Height);
TrackRECT trackRect = new TrackRECT();
TrackRECT thumbRect = new TrackRECT();
Graphics g = Graphics.FromHdc(tempDc.Hdc);
NativeMethods.SendMessage(hWnd, TBM.TBM_GETCHANNELRECT, 0, ref trackRect);
NativeMethods.SendMessage(hWnd, TBM.TBM_GETTHUMBRECT, 0, ref thumbRect);
Rectangle trackRectangle = horizontal ? 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 (PaintEventArgs pe = new PaintEventArgs(g, ClientRectangle))
{
OnRenderBackground(pe);
}
int ticks = NativeMethods.SendMessage(hWnd, TBM.TBM_GETNUMTICS, 0, 0);
int thumbOffset = horizontal ? thumbRect.Rect.Width : thumbRect.Rect.Height;
int trackWidth = trackRect.Right - trackRect.Left;
if (ticks > 0)
{
List<float> tickPosList = new List<float>(ticks);
float tickSpace = (trackWidth - thumbOffset) / (float)(ticks - 1);
float offset = trackRect.Left + thumbOffset / 2f;
for(int pos = 0; pos < ticks; pos ++)
{
tickPosList.Add(offset + tickSpace * pos);
}
//绘制TrackBar控件的刻度
using (PaintTickEventArgs pte = new PaintTickEventArgs(g, trackRectangle, tickPosList))
{
OnRenderTick(pte);
}
}
int rangeMin = NativeMethods.SendMessage(hWnd, TBM.TBM_GETRANGEMIN, 0, 0);
int rangeMax = NativeMethods.SendMessage(hWnd, TBM.TBM_GETRANGEMAX, 0, 0);
int iRange = rangeMax - rangeMin + 1;
if (iRange > 0)
{
float rangeSpace = iRange == 1 ? 0 : (trackWidth - thumbOffset) / (float)(iRange - 1);
float rangeOffset = trackRect.Left + thumbOffset / 2f;
//绘制TrackBar控件的轨道
using (PaintTrackEventArgs pe = new PaintTrackEventArgs(g, trackRectangle, rangeSpace, rangeOffset, rangeMin, rangeMax))
{
OnRenderTrack(pe);
}
}
//绘制TrackBar控件的滑块
using(PaintThumbEventArgs pe = new PaintThumbEventArgs(g, thumbRect.Rect, state)) {
OnRenderThumb(pe);
}
g.Dispose();
IntPtr hDC = NativeMethods.GetDC(hWnd);
NativeMethods.BitBlt(hDC, 0, 0, base.Width, base.Height, tempDc.Hdc, 0, 0,
0xCC0020);
NativeMethods.ReleaseDC(hWnd, hDC);
tempDc.Dispose();
}
扩展后的TrackBar控件还实现了一个ColorTable和Items属性,
ColorTable:只要通过ColorTable设置相应的颜色,就可以得到不同颜色效果的TrackBar控件了。
Items:通过添加项,可以显示不同段的背景颜色。
TrackBar控件的完整类视图:。