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

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

  • 相关阅读:
    AFO NOI2018退役——菜鸡一直是菜鸡
    NOI前总结
    洛谷3732:[HAOI2017]供给侧改革——题解
    BZOJ4037:[HAOI2015]数字串拆分——题解
    洛谷4717:【模板】 快速沃尔什变换——题解
    BZOJ3192:[JLOI2013]删除物品——题解
    BZOJ2288:[POJ Challenge]生日礼物——题解
    BZOJ1150:[APIO/CTSC2007]数据备份——题解
    BZOJ3155:Preprefix sum——题解
    Codility---FrogRiverOne
  • 原文地址:https://www.cnblogs.com/saper/p/1355772.html
Copyright © 2011-2022 走看看