zoukankan      html  css  js  c++  java
  • 学习自定义控件

          今天晚上在宿舍狠狠得看了一点关乎自定义控件与GDI+相结合的例子,终于看得懂一点了...原来每个控件的细节外观都是一点点画出来的,也许这需要对色彩有较强的敏感度,但没事,我有时间慢慢测试。现在不仅要自定义按钮,同时还要自定义窗体和菜单的外观,有点计划去模仿QQ2009的效果,嘿嘿~不过在自定义控件方面还是有很多空白,期待明天晚上能有所突破吧~明天晚上就继续学习,研究窗体的画图......
          后来我发现原来对自定义控件每做一步(包括鼠标动作、键盘动作以及控件自身的任何变化)它都重新画一遍图形,都会触发自定义控件的OnPaint事件(绘制图形事件),但这也是一瞬间的事,你几乎感觉不到它的闪烁,除了你事先定义的变化之外。
          当然,你所做的每一步动作控件是不会自己触发OnPaint事件的,这就要你自己去设置。其实很简单,设置就一个语句:this.Invalidate();    这句表示强制使当前图形无效而重新绘制图形,就会调用OnPaint事件,而此时你的OnPaint事件里面都是所有的对控件外观的重新绘制方法,所以就刷新了外观咯。将此语句加在你自定义控件的事件最后,那就OK了。
          大体的机制就是这样。明白了这个原理,就仿佛学习C#又懂得了面向对象,以后的路子就宽敞多了。从此不会为绘制控件外观和消除某一部分的图形而烦恼,因为外观一直在改变,刷新重新绘制,只是你没察觉而已。
          加油,我离我梦心日记本V2.0又近了一步。

  • 相关阅读:
    es6笔记6^_^generator
    es6笔记5^_^set、map、iterator
    es6笔记4^_^function
    es6笔记3^_^object
    关于eslint的使用与配置,以及prettier的使用
    关于查看本机ssh公钥以及生成公钥
    Github上传图片图床
    力扣剑指Offer:39. 数组中出现次数超过一半的数字
    计蒜客:求平均年龄Python方法
    力扣:面试题59. 滑动窗口的最大值Python题解
  • 原文地址:https://www.cnblogs.com/saper/p/1355772.html
Copyright © 2011-2022 走看看