c绘图技术制作水晶按钮控件【DOC精选】.docVIP

c绘图技术制作水晶按钮控件【DOC精选】.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c绘图技术制作水晶按钮控件【DOC精选】

绘图技术制作水晶按钮控件利用.NET绘图技术制作水晶按钮控件 2006-10-20 08:00作者:窦瑞欣出处:天极软件责任编辑:方舟   UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序。UI编程体现在两个方面,一是设计精美的用户界面,再有就是符合大多数用户习惯和易于使用的操作流程,而制作出精美的、绚丽多彩的用户界面是博得最终用户喜爱的第一步。我们就以制作一个水晶样式的三维按钮为例来丰富.Net界面素材库,为Windows 窗体程序增加亮点。   一、 技术要点   不可否认的是,Windows编程已经进入.Net时代,虽然现在的编程平台仍然是多家并存,但是微软的.Net框架类库已经全面占据了主流地位。.Net框架为我们提供了非常丰富的类、函数和方法,从桌面到Web它可以触及到编程的任何领域,以至于可以完全放弃Win32 API 的手工调用,因为.Net框架已经为我们准备好了一切。尤其是GDI+的发布,Win32程序员都应该非常清楚,在VC6和Delphi5、6、7下要想绘制不规则图形、设计独特样式的窗口控件是件多么不轻松的事情,我们需要返回当前设备指针,然后坐标映射,再调用标准的Win32 GDI函数来进行绘制操作,最后还得记着释放设备指针等一系列内存清理操作,现在有了.Net类库,我们只需在控件的OnPaint事件中通过e.Graphics返回Graphics对象,然后创建一个自定义的刷子对象Brush来填充Graphics表面,再创建一个Region对象设计好我们需要的控件轮廓,并将其赋给控件的Region属性,在这个过程中可以使用GDI+为我们提供的丰富的类和方法来设计美轮美奂的控件外观,这样一个全新的控件就创建完成了。   我们的示例控件是一个水晶样式的三维按钮,设计这样一个按钮控件其实并不复杂,我们只需要捕获OnPaint事件,并在事件中按照不同的按钮状态譬如:鼠标进入、鼠标悬停、鼠标单击以及鼠标离开等重新绘制按钮的外观。按钮的三维样式实际上就是三个矩形区域的叠加,即阴影位于最底层、按钮本身以及最顶层的按钮头部白色泡泡部分,这三部分有效的叠加就制作成了一个惟妙惟肖的水晶样式的按钮了,如下图所示: ?   在这个示例中用到的比较关键的类是GraphicsPath、LinearGradientBrush和PathGradientBrush。我们已经知道,对于复杂的图形绘制操作都会用到GraphicsPath对象,GraphicsPath为我们提供了一个非常方便的解决方案,它由一系列直线和曲线组成,通过创建复杂的闭合路径,我们可以轻松创建任意不规则图形;LinearGradientBrush和PathGradientBrush对象是我们成功创建该示例程序的关键类,它们都继承于基类Brush,Brush对象定义用于填充图形形状的内部的对象。LinearGradientBrush按照起始和结束坐标以及渐变的起始和结束颜色来创建一个该类的实例,该类支持双色渐变和自定义多色渐变,所有渐变都是沿由矩形的宽度或两个点指定的直线定义的,默认情况下,双色渐变是沿指定直线从起始色到结束色的均匀水平线性混合,所以,根据这个特性我们利用该类来绘制按钮本身和按钮顶部的白色渐变部分,部分代码如下: //创建按钮本身的图形 Rectangle rc = new Rectangle(btnOffset, btnOffset, this.ClientSize.Width - 8 - btnOffset, this.ClientSize.Height - 8 - btnOffset); GraphicsPath path1 = this.GetGraphicsPath(rc, 20); LinearGradientBrush br1 = new LinearGradientBrush(new Point(0, 0), new Point(0, rc.Height + 6), Color.Blue, Color.White); //创建按钮顶部的白色渐变 Rectangle rc3 = rc; rc3.Inflate(-5, -5); // rc3.Height = 15; GraphicsPath path3 = GetGraphicsPath(rc3, 20); LinearGradientBrush br3 = new LinearGradientBrush(rc3, Color.FromArgb(255, Color.White), Color.FromArgb(0, Color.White), LinearG

文档评论(0)

taotao0b + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档