最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 编程开发 > VB开发

Visual Basic中创建“五星”级控件技巧

日期:09-02    来源:中国设计秀    作者:cnwebshow.com

本文的目标是 Windows MediaPlayer 中酷炫的“五星”级控件Z6B中国设计秀
   该控件看起来非常棒,并且提供了一种很好的图形化查看等级的方法,但根据编辑经验,我发现它特别酷。当鼠标悬停在该栏上时,Windows Media Player 突出显示其中的星来显示您当前浮于其上的栏的值,从而提供了一种很好的图形反馈。在各种 Web 站点(包括 Netflix 和 Amazon)中,您可以发现相同类型的用户界面,并且我想在自己的应用程序中拥有这种功能,因此,我决定创建我自己的控件。我将使用 Windows 窗体控件来模拟这种用户界面元素,同时尝试使它具有足够的自定义能力,以便将其用于各种环境。 Z6B中国设计秀
Z6B中国设计秀
入门 Z6B中国设计秀
Z6B中国设计秀
   第一个步骤是创建一个新的类库项目来容纳控件和空的 Windows 应用程序,以作为测试项目。尽管 Windows 控件库项目模板似乎更为合适,并且它可以很好地进行工作,但是在默认情况下,该项目包括用户控件(用户控件一般用于复合控件 ─ 包含一个或多个控件的 Windows 窗体控件),而我需要的只是一个空的类文件。下一步,您必须使当前的、新的空类从 System.Windows.Forms.Control 中继承,这只需在类声明后添加一个单行就可以实现: Z6B中国设计秀
Z6B中国设计秀
 Z6B中国设计秀

Public Class Ratings Z6B中国设计秀
Inherits System.Windows.Forms.Control End Class

Z6B中国设计秀
   如果您尝试只使用 IntelliSense? 添加 Inherits 语句,将会遇到一个小问题:使用类库模板来启动您的项目并不会添加对 System.Windows.Forms 程序集的引用,因此,您需要手动添加。此时,可先添加一个对 System.Drawing.dll 的引用,因为最后需要使用自定义绘图控件。 从现在起,我一般遵循以下几个步骤来进行所有的控件开发: Z6B中国设计秀
Z6B中国设计秀
   1.为自定义绘图控件添加标准构造函数,设置该控件所需的所有控件样式,以便正确地绘图并尽可能使其平滑。 Z6B中国设计秀
Z6B中国设计秀
 Z6B中国设计秀

Public Sub New() Z6B中国设计秀
  Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True) Z6B中国设计秀
  Me.SetStyle(ControlStyles.DoubleBuffer, True) Z6B中国设计秀
  Me.SetStyle(ControlStyles.ResizeRedraw, True) Z6B中国设计秀
  Me.SetStyle(ControlStyles.UserPaint, True) Z6B中国设计秀
  ... 'add any additional initialization code here Z6B中国设计秀
End Sub

Z6B中国设计秀
   2.用纸记下配置控件行为和外观可能需要的公共属性清单。 Z6B中国设计秀
Z6B中国设计秀
   3.将所有这些属性添加为私有成员变量(我喜欢使用匈牙利表示法在每个变量前面添加前缀“m_”来表示内部变量),并包括适当的默认值,如下 所示。 Z6B中国设计秀
Z6B中国设计秀
 Z6B中国设计秀

Private m_FilledImage As Image Z6B中国设计秀
Private m_EmptyImage As Image Z6B中国设计秀
Private m_HoverImage As Image Z6B中国设计秀
Private m_ImageCount As Integer = 5 Z6B中国设计秀
Private m_TopMargin As Integer = 2 Z6B中国设计秀
Private m_LeftMargin As Integer = 4 Z6B中国设计秀
Private m_BottomMargin As Integer = 2 Z6B中国设计秀
Private m_RightMargin As Integer = 4 Z6B中国设计秀
Private m_ImageSpacing As Integer = 8 Z6B中国设计秀
Private m_ImageToDraw As Integer = 1

Private m_SelectedColor As Color = Color.Empty Z6B中国设计秀
Private m_HoverColor As Color = Color.Empty Z6B中国设计秀
Private m_EmptyColor As Color = Color.Empty Z6B中国设计秀
Private m_OutlineColor As Color = Color.EmptyZ6B中国设计秀

Private m_selectedItem As Integer = 3 Z6B中国设计秀
Private m_hoverItem As Integer = 1 Z6B中国设计秀
Private m_hovering As Boolean = FalseZ6B中国设计秀

Private ItemAreas() As RectangleZ6B中国设计秀

Z6B中国设计秀
   4.将这些变量放入属性过程,虽然其中大部分过程相当简单(获取值,设置值),但是其中有些过程将需要一些附加代码,稍后我将进行讨论。 Z6B中国设计秀
Z6B中国设计秀
   5.开始设计和编写自定义绘图代码。 Z6B中国设计秀
Z6B中国设计秀
   6.最后,添加新的事件,如单击处理或该特定控件所需的特定事件。 Z6B中国设计秀
Z6B中国设计秀
带有特定默认值的属性例程 Z6B中国设计秀
Z6B中国设计秀
   我想要一些自己的属性 Z6B中国设计秀
Z6B中国设计秀
    ─ 处理颜色的那些属性 Z6B中国设计秀
Z6B中国设计秀
    ─ 反映有关控件的其他属性的默认值(如 ForeColor)以及反映用户系统颜色的其他值。例如,让我们只使用其中的一种颜色 HoverColor 来查看可生成默认值的不同方法。 Z6B中国设计秀
Z6B中国设计秀
   第一种方法是显而易见的,只需在变量声明(或者构造函数)中设置默认值: Z6B中国设计秀
Z6B中国设计秀
 Z6B中国设计秀

Private m_HoverColor As Color = _ Z6B中国设计秀
Color.FromKnownColor(KnownColor.Highlight)

Z6B中国设计秀
   在多数情况下,这就可以很好地进行工作,但是它存在两个问题。第一个问题是,

本文引用地址:/bc/article_61303.html
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明