cScrollbarDraw.cls
上传用户:jnjasmy
上传日期:2015-01-04
资源大小:637k
文件大小:8k
源码类别:

GDI/图象编程

开发平台:

Visual Basic

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "cScrollbarDraw"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = False
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Option Explicit
  15. Private Const SBackH = 0
  16. Private Const SThumbH = 1
  17. Private Const STGripH = 2
  18. Private Const SArrowH = 3
  19. Private Const SArrowL = 4
  20. Private Const SArrowR = 5
  21. Private Const SBackV = 6
  22. Private Const SThumbV = 7
  23. Private Const STGripV = 8
  24. Private Const SArrowV = 9
  25. Private Const SArrowT = 10
  26. Private Const SArrowB = 11
  27. Private BarPics(11)                As New pcMemDC
  28. Private Sub Class_Initialize()
  29.   BarPics(SBackH).CreateFromPicture LoadResPicture("SCRBACKH", vbResBitmap)
  30.   BarPics(SThumbH).CreateFromPicture LoadResPicture("SCRTHUMBH", vbResBitmap)
  31.   BarPics(STGripH).CreateFromPicture LoadResPicture("SCRGRIPH", vbResBitmap)
  32.   BarPics(SArrowH).CreateFromPicture LoadResPicture("SCRARROWH", vbResBitmap)
  33.   BarPics(SArrowL).CreateFromPicture LoadResPicture("SCRARROWHL", vbResBitmap)
  34.   BarPics(SArrowR).CreateFromPicture LoadResPicture("SCRARROWHR", vbResBitmap)
  35.   
  36.   BarPics(SBackV).CreateFromPicture LoadResPicture("SCRBACKV", vbResBitmap)
  37.   BarPics(SThumbV).CreateFromPicture LoadResPicture("SCRTHUMBV", vbResBitmap)
  38.   BarPics(STGripV).CreateFromPicture LoadResPicture("SCRGRIPV", vbResBitmap)
  39.   BarPics(SArrowV).CreateFromPicture LoadResPicture("SCRARROWV", vbResBitmap)
  40.   BarPics(SArrowT).CreateFromPicture LoadResPicture("SCRARROWVT", vbResBitmap)
  41.   BarPics(SArrowB).CreateFromPicture LoadResPicture("SCRARROWVB", vbResBitmap)
  42. End Sub
  43. Friend Sub DrawBack(lhDC As Long, mOrientation As Integer, mIndex As Integer, theRect As RECT)
  44.     If mOrientation = 1 Then 'Horizontal
  45.         BarPics(SBackH).StretchDraw lhDC, theRect.Left, theRect.Top, theRect.Right - theRect.Left, 3, mIndex * 2, 0, 2, 3
  46.         BarPics(SBackH).StretchDraw lhDC, theRect.Left, theRect.Bottom - 3, theRect.Right - theRect.Left, 3, mIndex * 2, 17 - 3, 2, 3
  47.         BarPics(SBackH).StretchDraw lhDC, theRect.Left, theRect.Top + 3, theRect.Right - theRect.Left, theRect.Bottom - theRect.Top - 6, mIndex * 2, 3, 2, 17 - 6
  48.       Else
  49.         BarPics(SBackV).StretchDraw lhDC, theRect.Left, theRect.Top, 3, theRect.Bottom - theRect.Top, 0, mIndex * 2, 3, 2
  50.         BarPics(SBackV).StretchDraw lhDC, theRect.Right - 3, theRect.Top, 3, theRect.Bottom - theRect.Top, 17 - 3, mIndex * 2, 3, 2
  51.         BarPics(SBackV).StretchDraw lhDC, theRect.Left + 3, theRect.Top, theRect.Right - theRect.Left - 6, theRect.Bottom - theRect.Top, 3, mIndex * 2, 17 - 6, 2
  52.     End If
  53. End Sub
  54. Friend Sub DrawBar(lhDC As Long, mOrientation As Integer, mIndex As Integer, theRect As RECT)
  55.     If mOrientation = 1 Then 'Horizontal
  56.         BarPics(SThumbH).Draw lhDC, 0, mIndex * 17, 3, 3, theRect.Left, theRect.Top
  57.         BarPics(SThumbH).Draw lhDC, 0, (mIndex * 17) + 17 - 3, 3, 3, theRect.Left, theRect.Bottom - 3
  58.         BarPics(SThumbH).StretchDraw lhDC, theRect.Left, theRect.Top + 3, 3, theRect.Bottom - theRect.Top - 6, 0, (mIndex * 17) + 3, 3, 17 - 6
  59.         
  60.         BarPics(SThumbH).StretchDraw lhDC, theRect.Left + 3, theRect.Top, theRect.Right - theRect.Left - 6, 3, 3, mIndex * 17, 15 - 6, 3
  61.         BarPics(SThumbH).StretchDraw lhDC, theRect.Left + 3, theRect.Bottom - 3, theRect.Right - theRect.Left - 6, 3, 3, (mIndex * 17) + 17 - 3, 15 - 6, 3
  62.         BarPics(SThumbH).StretchDraw lhDC, theRect.Left + 3, theRect.Top + 3, theRect.Right - theRect.Left - 6, theRect.Bottom - theRect.Top - 6, 3, (mIndex * 17) + 3, 15 - 6, 17 - 6
  63.       
  64.         BarPics(SThumbH).Draw lhDC, 15 - 3, mIndex * 17, 3, 3, theRect.Right - 3, theRect.Top
  65.         BarPics(SThumbH).Draw lhDC, 15 - 3, (mIndex * 17) + 17 - 3, 3, 3, theRect.Right - 3, theRect.Bottom - 3
  66.         BarPics(SThumbH).StretchDraw lhDC, theRect.Right - 3, theRect.Top + 3, 3, theRect.Bottom - theRect.Top - 6, 15 - 3, (mIndex * 17) + 3, 3, 17 - 6
  67.       
  68.         If theRect.Right - theRect.Left > 15 Then
  69.             BarPics(STGripH).Draw lhDC, 0, mIndex * 9, 10, 9, ((theRect.Right - theRect.Left - 10) / 2) + theRect.Left, (theRect.Bottom - theRect.Top - 9) / 2, True
  70.         End If
  71.       Else
  72.         BarPics(SThumbV).Draw lhDC, mIndex * 17, 0, 3, 3, theRect.Left, theRect.Top
  73.         BarPics(SThumbV).Draw lhDC, (mIndex * 17) + 17 - 3, 0, 3, 3, theRect.Right - 3, theRect.Top
  74.         BarPics(SThumbV).StretchDraw lhDC, theRect.Left + 3, theRect.Top, theRect.Right - theRect.Left - 6, 3, (mIndex * 17) + 3, 0, 17 - 6, 3
  75.         
  76.         BarPics(SThumbV).StretchDraw lhDC, theRect.Left, theRect.Top + 3, 3, theRect.Bottom - theRect.Top - 6, mIndex * 17, 3, 3, 15 - 6
  77.         BarPics(SThumbV).StretchDraw lhDC, theRect.Right - 3, theRect.Top + 3, 3, theRect.Bottom - theRect.Top - 6, (mIndex * 17) + 17 - 3, 3, 3, 15 - 6
  78.         BarPics(SThumbV).StretchDraw lhDC, theRect.Left + 3, theRect.Top + 3, theRect.Right - theRect.Left - 6, theRect.Bottom - theRect.Top - 6, (mIndex * 17) + 3, 3, 17 - 6, 15 - 6
  79.     
  80.         BarPics(SThumbV).Draw lhDC, mIndex * 17, 15 - 3, 3, 3, theRect.Left, theRect.Bottom - 3
  81.         BarPics(SThumbV).Draw lhDC, (mIndex * 17) + 17 - 3, 15 - 3, 3, 3, theRect.Right - 3, theRect.Bottom - 3
  82.         BarPics(SThumbV).StretchDraw lhDC, theRect.Left + 3, theRect.Bottom - 3, theRect.Right - theRect.Left - 6, 3, (mIndex * 17) + 3, 15 - 3, 17 - 6, 3
  83.     
  84.         If theRect.Bottom - theRect.Top > 15 Then
  85.             BarPics(STGripV).Draw lhDC, 0, mIndex * 10, 9, 10, (theRect.Right - theRect.Left - 9) / 2, ((theRect.Bottom - theRect.Top - 10) / 2) + theRect.Top, True
  86.         End If
  87.     End If
  88. End Sub
  89. Friend Sub DrawTopLeftButton(lhDC As Long, mOrientation As Integer, mIndex As Integer, theRect As RECT)
  90.     If mOrientation = 1 Then 'Horizontal
  91.         BarPics(SArrowH).Draw lhDC, mIndex * 18, 0, 18, 3, theRect.Left, theRect.Top
  92.         BarPics(SArrowH).Draw lhDC, mIndex * 18, 17 - 3, 18, 3, theRect.Left, theRect.Bottom - 3
  93.         BarPics(SArrowH).StretchDraw lhDC, theRect.Left, theRect.Top + 3, 18, theRect.Bottom - theRect.Top - 6, mIndex * 18, 3, 18, 17 - 6
  94.         BarPics(SArrowL).Draw lhDC, mIndex * 18, 0, 18, 17, theRect.Left, (theRect.Bottom - theRect.Top - 17) / 2, True
  95.       Else
  96.         BarPics(SArrowV).Draw lhDC, 0, mIndex * 18, 3, 18, theRect.Left, theRect.Top
  97.         BarPics(SArrowV).Draw lhDC, 17 - 3, mIndex * 18, 3, 18, theRect.Right - 3, theRect.Top
  98.         BarPics(SArrowV).StretchDraw lhDC, theRect.Left + 3, theRect.Top, theRect.Right - theRect.Left - 6, 18, 3, mIndex * 18, 17 - 6, 18
  99.         BarPics(SArrowT).Draw lhDC, 0, mIndex * 18, 17, 18, (theRect.Right - theRect.Left - 17) / 2, theRect.Left, True
  100.     End If
  101. End Sub
  102. Friend Sub DrawBottomRightButton(lhDC As Long, mOrientation As Integer, mIndex As Integer, theRect As RECT)
  103.     If mOrientation = 1 Then 'Horizontal
  104.         BarPics(SArrowH).Draw lhDC, mIndex * 18, 0, 18, 3, theRect.Left, theRect.Top
  105.         BarPics(SArrowH).Draw lhDC, mIndex * 18, 17 - 3, 18, 3, theRect.Left, theRect.Bottom - 3
  106.         BarPics(SArrowH).StretchDraw lhDC, theRect.Left, theRect.Top + 3, 18, theRect.Bottom - theRect.Top - 6, mIndex * 18, 3, 18, 17 - 6
  107.         BarPics(SArrowR).Draw lhDC, mIndex * 18, 0, 18, 17, theRect.Left, (theRect.Bottom - theRect.Top - 17) / 2, True
  108.       Else
  109.         BarPics(SArrowV).Draw lhDC, 0, mIndex * 18, 3, 18, theRect.Left, theRect.Top
  110.         BarPics(SArrowV).Draw lhDC, 17 - 3, mIndex * 18, 3, 18, theRect.Right - 3, theRect.Top
  111.         BarPics(SArrowV).StretchDraw lhDC, theRect.Left + 3, theRect.Top, theRect.Right - theRect.Left - 6, 18, 3, mIndex * 18, 17 - 6, 18
  112.         BarPics(SArrowB).Draw lhDC, 0, mIndex * 18, 17, 18, (theRect.Right - theRect.Left - 17) / 2, theRect.Top, True
  113.     End If
  114. End Sub