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

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

  • 相关阅读:
    不准再问我:最近过的怎么样
    嫌疑人X的献身
    关于生活
    怎么可以这样
    在WPF中动态使用图片和按钮
    MFC 中获取对话框中控件焦点的方法
    MessageBox的常见用法
    拖拽(待完善版)
    Baidu Suggestion 百度搜索(仅功能实现,烂版)
    如何判断一个对象是Element?
  • 原文地址:https://www.cnblogs.com/saper/p/1355772.html
Copyright © 2011-2022 走看看