zoukankan      html  css  js  c++  java
  • Windows Scroll Note

    理解关键一

    iPaintBeg=max(0,iVertPos+ps.rcPaint.top/cyChar);

    iPaintEnd=min(iVertPos+ps.rcPaint.bottom/cyChar,LINENUMBERS-1);

    iVertPos是当前滚动条位置,那么开始绘制的地方就应该是滚动条所在的位置,对应到要显示的整个区域的位置也是这个iVertPos,后面的top可以去掉,因为显示区top等于0。绘制结束的地方应该是iVertPos加上绘制区的高度。这些都需要在显示屏后面的整个显示范围上看,以绘制区为尺度。

    理解关键二

    x=cxChar*(1-iHorzPos);

    y=cyChar*(i-iVertPos);

    先看y,比如i=iPaintBeg事,即i=iVertPos,此时对应绘制区0的位置,随着循环递加,逐行绘制。x的值令人比较迷惑,这是由于两个原因的干扰,一个是横向拉动的话还是原来那几行文字,和纵向是不一样的,如果把他们认为是相同的就很难理解了。另一个原因是函数ScrollWindow造成的,作者没有详细介绍这个函数,他的实现肯定决定了这个值的取法。关于1,是自己定义的,保证了文字不太靠近边缘。

  • 相关阅读:
    Oracle EXTRACT()函数与to_char() 函数
    Java内部类
    SQL 之 Group By
    Android LayoutInflater布局填充器
    JS 图片转Base64
    C# 事件与委托的区别
    AngularJS的循环输出
    jquery实现button倒计时
    重新理解B/S和C/S的区别
    HashMap与HashTable
  • 原文地址:https://www.cnblogs.com/xzlq/p/3107556.html
Copyright © 2011-2022 走看看