home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Graphics Programming (2nd Edition) / Visual Basic Graphics Programming 2nd Edition.iso / Src / Ch2 / Flood.frm (.txt) < prev    next >
Encoding:
Visual Basic Form  |  1999-03-23  |  4.2 KB  |  114 lines

  1. VERSION 5.00
  2. Begin VB.Form frmFlood 
  3.    Caption         =   "Flood"
  4.    ClientHeight    =   4125
  5.    ClientLeft      =   60
  6.    ClientTop       =   345
  7.    ClientWidth     =   5190
  8.    LinkTopic       =   "Form1"
  9.    ScaleHeight     =   4125
  10.    ScaleWidth      =   5190
  11.    StartUpPosition =   3  'Windows Default
  12. Attribute VB_Name = "frmFlood"
  13. Attribute VB_GlobalNameSpace = False
  14. Attribute VB_Creatable = False
  15. Attribute VB_PredeclaredId = True
  16. Attribute VB_Exposed = False
  17. Option Explicit
  18. Private Type POINTAPI
  19.     X As Long
  20.     Y As Long
  21. End Type
  22. Private Declare Function FloodFill Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
  23. Private Declare Function PolyPolygon Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long) As Long
  24. Private Sub Form_Load()
  25. Dim Point(1 To 100) As POINTAPI
  26. Dim NumPoints(1 To 10) As Long
  27.     AutoRedraw = True
  28.     ScaleMode = vbPixels
  29.     ' Initialize the point data.
  30.     Point(1).X = 25:  Point(1).Y = 248
  31.     Point(2).X = 16:  Point(2).Y = 163
  32.     Point(3).X = 71:  Point(3).Y = 152
  33.     Point(4).X = 65:  Point(4).Y = 171
  34.     Point(5).X = 32:  Point(5).Y = 173
  35.     Point(6).X = 35:  Point(6).Y = 190
  36.     Point(7).X = 59:  Point(7).Y = 186
  37.     Point(8).X = 62:  Point(8).Y = 206
  38.     Point(9).X = 38:  Point(9).Y = 210
  39.     Point(10).X = 46: Point(10).Y = 243
  40.     NumPoints(1) = 10
  41.     Point(11).X = 83:  Point(11).Y = 169
  42.     Point(12).X = 82:  Point(12).Y = 239
  43.     Point(13).X = 126: Point(13).Y = 241
  44.     Point(14).X = 127: Point(14).Y = 214
  45.     Point(15).X = 96:  Point(15).Y = 222
  46.     Point(16).X = 105: Point(16).Y = 166
  47.     NumPoints(2) = 6
  48.     Point(17).X = 153: Point(17).Y = 168
  49.     Point(18).X = 144: Point(18).Y = 185
  50.     Point(19).X = 143: Point(19).Y = 212
  51.     Point(20).X = 156: Point(20).Y = 236
  52.     Point(21).X = 175: Point(21).Y = 241
  53.     Point(22).X = 190: Point(22).Y = 222
  54.     Point(23).X = 192: Point(23).Y = 186
  55.     Point(24).X = 177: Point(24).Y = 165
  56.     NumPoints(3) = 8
  57.     Point(25).X = 166: Point(25).Y = 182
  58.     Point(26).X = 155: Point(26).Y = 198
  59.     Point(27).X = 164: Point(27).Y = 221
  60.     Point(28).X = 176: Point(28).Y = 219
  61.     Point(29).X = 179: Point(29).Y = 195
  62.     NumPoints(4) = 5
  63.     Point(30).X = 213: Point(30).Y = 165
  64.     Point(31).X = 206: Point(31).Y = 184
  65.     Point(32).X = 204: Point(32).Y = 215
  66.     Point(33).X = 219: Point(33).Y = 235
  67.     Point(34).X = 237: Point(34).Y = 236
  68.     Point(35).X = 248: Point(35).Y = 211
  69.     Point(36).X = 246: Point(36).Y = 176
  70.     Point(37).X = 231: Point(37).Y = 164
  71.     NumPoints(5) = 8
  72.     Point(38).X = 225: Point(38).Y = 175
  73.     Point(39).X = 217: Point(39).Y = 192
  74.     Point(40).X = 219: Point(40).Y = 215
  75.     Point(41).X = 230: Point(41).Y = 220
  76.     Point(42).X = 239: Point(42).Y = 198
  77.     Point(43).X = 234: Point(43).Y = 182
  78.     NumPoints(6) = 6
  79.     Point(44).X = 262: Point(44).Y = 166
  80.     Point(45).X = 264: Point(45).Y = 236
  81.     Point(46).X = 287: Point(46).Y = 238
  82.     Point(47).X = 303: Point(47).Y = 227
  83.     Point(48).X = 310: Point(48).Y = 201
  84.     Point(49).X = 303: Point(49).Y = 174
  85.     Point(50).X = 282: Point(50).Y = 160
  86.     NumPoints(7) = 7
  87.     Point(51).X = 280: Point(51).Y = 182
  88.     Point(52).X = 279: Point(52).Y = 217
  89.     Point(53).X = 291: Point(53).Y = 213
  90.     Point(54).X = 295: Point(54).Y = 197
  91.     Point(55).X = 290: Point(55).Y = 184
  92.     NumPoints(8) = 5
  93.     Point(56).X = 158: Point(56).Y = 32
  94.     Point(57).X = 142: Point(57).Y = 63
  95.     Point(58).X = 105: Point(58).Y = 57
  96.     Point(59).X = 131: Point(59).Y = 91
  97.     Point(60).X = 121: Point(60).Y = 127
  98.     Point(61).X = 160: Point(61).Y = 101
  99.     Point(62).X = 200: Point(62).Y = 124
  100.     Point(63).X = 190: Point(63).Y = 81
  101.     Point(64).X = 213: Point(64).Y = 49
  102.     Point(65).X = 174: Point(65).Y = 58
  103.     NumPoints(9) = 10
  104.     ' Draw the polygons.
  105.     PolyPolygon hdc, Point(1), NumPoints(1), 9
  106.     FillStyle = vbSolid
  107. End Sub
  108. ' Flood the clicked area with a random color.
  109. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  110.     FillColor = QBColor(Int(1 + Rnd * 15))
  111.     FloodFill hdc, X, Y, vbBlack
  112.     Refresh
  113. End Sub
  114.