home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 4_2005-2006.ISO / data / Zips / TileMaker1935149242005.psc / TileMaker / BmpCodes.bas < prev    next >
BASIC Source File  |  1999-02-07  |  90KB  |  2,219 lines

  1. Attribute VB_Name = "BmpCodes"
  2. Private Declare Function BitBlt Lib "GDI32" (ByVal hDestDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal nWid As Integer, ByVal nHt As Integer, ByVal hSrcDC As Integer, ByVal XSrc As Integer, ByVal YSrc As Integer, ByVal dwRop As Long) As Integer
  3. Declare Function SetPixel Lib "GDI32" (ByVal hDC As Integer, ByVal X As Integer, ByVal Y As Integer, ByVal crColor As Long) As Long
  4. Declare Function GetPixel Lib "GDI32" (ByVal hDC As Integer, ByVal X As Integer, ByVal Y As Integer) As Long
  5. Declare Function StretchBlt% Lib "GDI32" (ByVal hDC%, ByVal X%, ByVal Y%, ByVal nWidth%, ByVal nHeight%, ByVal hSrcDC%, ByVal XSrc%, ByVal YSrc%, ByVal nSrcWidth%, ByVal nSrcHeight%, ByVal dwRop&)
  6. Declare Function FloodFill Lib "GDI32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Long
  7. Declare Function ExtFloodFill Lib "GDI32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long, ByVal wFillType As Long) As Long
  8.  
  9. Declare Function Rectangle Lib "GDI32" (ByVal hDC As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  10. Declare Function Ellipse Lib "GDI32" (ByVal hDC As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
  11. Declare Function Chord Lib "GDI32" (ByVal hDC As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
  12. Declare Function Arc Lib "GDI32" (ByVal hDC As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
  13. Declare Function ArcTo Lib "GDI32" (ByVal hDC As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long
  14. Declare Function TextOut Lib "GDI32" Alias "TextOutA" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
  15.  
  16.  
  17. 'BmpFlip, BmpMirror, BmpRotate
  18. Const pi = 3.14159265359
  19.  
  20. Public Const SRCAND = &H8800C6  ' (DWORD) dest = source AND dest
  21. Public Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
  22. Public Const SRCERASE = &H440328        ' (DWORD) dest = source AND (NOT dest )
  23. Public Const SRCINVERT = &H660046       ' (DWORD) dest = source XOR dest
  24. Public Const SRCPAINT = &HEE0086        ' (DWORD) dest = source OR dest
  25. Private Const NOTSRCCOPY = &H330008      ' (DWORD) dest = (NOT source)
  26.  
  27.  
  28. Public Const FLOODFILLBORDER = 0
  29. Public Const FLOODFILLSURFACE = 1
  30.  
  31. 'Public Aspect
  32.  
  33. Public Enum SpecialFilters
  34.     fEmboss
  35.     fEngrave
  36.     fMotionBlur
  37. End Enum
  38.  
  39.  
  40. Public Sub BmpMirror(Pict1 As PictureBox, pict2 As PictureBox)
  41. Dim px%
  42. Dim py%
  43.  
  44.  On Error GoTo HandleErr
  45.  
  46.     'flip horizontal
  47.     Pict1.ScaleMode = 3
  48.     pict2.ScaleMode = 3
  49.  
  50.     pict2.Picture = LoadPicture()
  51.     px% = Pict1.ScaleWidth
  52.     py% = Pict1.ScaleHeight
  53.     RetVal% = StretchBlt(pict2.hDC, px% - 1, 0, -px%, py%, Pict1.hDC, 0, 0, px%, py%, SRCCOPY)
  54.     pict2.Refresh
  55.     pict2.Picture = pict2.Image
  56.     Pict1.Picture = pict2.Image
  57.     Exit Sub
  58.     
  59. HandleErr:
  60. MsgBox Err.Description, vbCritical
  61. Exit Sub
  62. End Sub
  63.  
  64.  
  65. 'This is a revised edition of the bmpTile which I
  66. 'collected and changed a litle bit This one is much more
  67. 'efficient than the previous one which had the
  68. 'problem of over flow. Thanks to  www.vb-helper.com
  69.  
  70. Sub BmpTile(Targetobj As Object, picTile As PictureBox)
  71. Dim Wid As Single
  72. Dim Hgt As Single
  73. Dim X As Single
  74. Dim Y As Single
  75.  
  76. On Error GoTo HandleTileErr 'just in case
  77.  
  78.     Wid = picTile.ScaleWidth
  79.     Hgt = picTile.ScaleHeight
  80.     Y = 0
  81.     
  82.     Targetobj.Picture = LoadPicture()
  83.     frmMain.stbar.Text = "Processing Tile..."
  84.     frmMain.ProgBar.Visible = True
  85.     Do While Y < Targetobj.ScaleHeight
  86.         X = 0
  87.         Do While X < Targetobj.ScaleWidth
  88.             Targetobj.PaintPicture picTile.Picture, _
  89.                 X, Y, Wid, Hgt
  90.             X = X + Wid
  91.         Loop
  92.         Y = Y + Hgt
  93.         Update_Progress ((Y * 100) / Hgt), "Processing..."
  94.     Loop
  95.   
  96.     Targetobj.Refresh
  97.   Targetobj.Picture = Targetobj.Image
  98. frmMain.stbar.Text = "Ready."
  99. frmMain.ProgBar.Visible = False
  100. Exit Sub
  101. HandleTileErr:
  102. frmMain.stbar.Text = "Ready"
  103.  
  104. Exit Sub
  105. End Sub
  106.  
  107. 'This is a revised edition of the bmpFlip which I
  108. 'changed a litle bit this procedure is fixed with
  109. 'the problem of a distorted image caused before with
  110. 'the old procedure.
  111. Public Sub BmpFlip(Pict1 As PictureBox, pict2 As PictureBox, ByVal FlipBy As String)
  112. Dim px%
  113. Dim py%
  114.     
  115. On Error GoTo HandleErr
  116.     'flip
  117.     Pict1.ScaleMode = 3
  118.     pict2.ScaleMode = 3
  119.     
  120.     pict2.Picture = LoadPicture()
  121.     px% = Pict1.ScaleWidth
  122.     py% = Pict1.ScaleHeight
  123.     
  124.     If UCase(FlipBy) = "H" Then
  125.     pict2.PaintPicture Pict1.Picture, _
  126.                 0, py% - 1, px%, -py%, 0, 0, px%, py%, SRCCOPY
  127.     Else
  128.     pict2.PaintPicture Pict1.Picture, _
  129.                px% - 1, 0, -px%, py%, 0, 0, px%, py%, SRCCOPY
  130.     End If
  131.    
  132.     pict2.Refresh
  133.     pict2.Picture = pict2.Image
  134.     Pict1.Picture = pict2.Image
  135. Exit Sub
  136.  
  137. HandleErr:
  138. MsgBox Err.Description, vbCritical
  139. Exit Sub
  140. End Sub
  141.  
  142. 'draws a picture in a preview form
  143. Sub Paint_ClipSize(picParent As PictureBox, picClip As PictureBox)
  144. Dim to_x As Single
  145. Dim to_y As Single
  146. Dim Wid As Single
  147. Dim Hgt As Single
  148.  
  149. On Error GoTo HandleErr
  150.  
  151.     If picParent.Picture = 0 Then Exit Sub
  152.    With picClip
  153.    .Picture = LoadPicture()
  154.     
  155.     ' See if the image is too big to fit.
  156.     Wid = picParent.ScaleWidth
  157.     Hgt = picParent.ScaleHeight
  158.     If Wid > .ScaleWidth Then
  159.         Hgt = Hgt * .ScaleWidth / Wid
  160.         Wid = .ScaleWidth
  161.     End If
  162.     If Hgt > .ScaleHeight Then
  163.         Wid = Wid * .ScaleHeight / Hgt
  164.         Hgt = .ScaleHeight
  165.     End If
  166.  
  167.     ' See where we need to put the picture to center it.
  168.     to_x = (.ScaleWidth - Wid) / 2
  169.     to_y = (.ScaleHeight - Hgt) / 2
  170.  
  171.     ' Copy the picture centered on the form.
  172.     .PaintPicture picParent.Picture, _
  173.         to_x, to_y, Wid, Hgt
  174.     .Refresh
  175.     .Picture = .Image
  176.     End With
  177. Exit Sub
  178.  
  179. HandleErr:
  180. MsgBox Err.Description, vbCritical
  181. Exit Sub
  182. End Sub
  183.  
  184. 'negative form of image
  185. Sub bmpNegative(picFrom As PictureBox, picTo As PictureBox)
  186. Dim Wid, Hgt As Single
  187. On Error Resume Next
  188.     Wid = picFrom.ScaleWidth
  189.     Hgt = picFrom.ScaleHeight
  190.     picTo.Picture = LoadPicture()
  191.      picTo.PaintPicture picFrom, 0, 0, Wid, Hgt, 0, 0, Wid, Hgt, SRCINVERT 'negative
  192.     picTo.Refresh
  193.     picTo.Picture = picTo.Image
  194.     picFrom.Picture = picTo.Image
  195.     Exit Sub
  196. End Sub
  197.  
  198. 'pattern
  199. Sub Draw_Pattern(pic As PictureBox, ByVal shap, ByVal siz)
  200. Dim w, h, r, X, Y
  201.    w = pic.ScaleWidth / 2
  202.    h = pic.ScaleHeight / 2
  203.      pic.Cls
  204.  On Error GoTo HandleErr
  205.      
  206.         For i = 1 To 360
  207.             angle = (i * 3.141592654) / 180
  208.             r = siz * Cos(shap * angle)
  209.             X = r * Sin(angle)
  210.             Y = r * Cos(angle)
  211.           pic.PSet (X + w, Y + h), QBColor(i Mod 15)
  212.           pic.Refresh
  213.          DoEvents
  214.         Next i
  215.      pic.Picture = pic.Image
  216. Exit Sub
  217.  
  218.  
  219. HandleErr:
  220. MsgBox Err.Description, vbCritical
  221. Exit Sub
  222. End Sub
  223.  
  224. 'draws a lens
  225. Sub Draw_Lens(pLens As PictureBox, pImage As PictureBox)
  226. On Error Resume Next
  227. pLens.Picture = LoadPicture()
  228. pLens.PaintPicture pImage.Picture _
  229. , 0, 0, pLens.Width, pLens.Height
  230. Exit Sub
  231. End Sub
  232.  
  233. 'draws a pattern with a selected color
  234. Sub Pattern_SColor(pic As PictureBox, ByVal numSteps, ByVal cselColr As Long)
  235. Dim pScaleMode, i
  236.  
  237.  On Error GoTo HandleErr
  238.  
  239.   If numSteps = "" Then Exit Sub
  240.    If numSteps <= 0 Then Exit Sub
  241.     pScaleMode = pic.ScaleMode
  242.     pic.ScaleMode = vbTwips
  243.     pic.Picture = LoadPicture()
  244.     pic.FillStyle = 1
  245.     For i = 0 To pic.Width Step pic.Width / numSteps
  246.     If cStyle(0) = 1 Then
  247.         pic.Line (i, pic.Height)-(0, i), cselColr '3D effect
  248.     End If
  249.     If cStyle(1) = 1 Then
  250.          pic.Line (i, 0)-(pic.Height, i), cselColr '3D effect
  251.     End If
  252.     If cStyle(2) = 1 Then
  253.     pic.Line (0, pic.Height - i)-(i, 0), cselColr '3D effect
  254.     End If
  255.     If cStyle(3) = 1 Then
  256.     pic.Line (pic.Height, pic.Height - i)-(i, pic.Height), cselColr  '3D effect
  257.     End If
  258.     If cStyle(4) = 1 Then
  259.          pic.Line (i, pic.Height)-(0, 0), cselColr 'topleft
  260.     End If
  261.     If cStyle(5) = 1 Then
  262.          pic.Line (0, 0)-(pic.Height, i), cselColr 'topleft
  263.     End If
  264.     If cStyle(6) = 1 Then
  265.          pic.Line (pic.Height, pic.Height)-(i, 0), cselColr 'bottomleft
  266.     End If
  267.     If cStyle(7) = 1 Then
  268.          pic.Line (pic.Height, pic.Height)-(0, i), cselColr 'bottomleft
  269.     End If
  270.     If cStyle(8) = 1 Then
  271.          pic.Line (0, i)-(pic.Height, 0), cselColr 'topright
  272.     End If
  273.     If cStyle(9) = 1 Then
  274.          pic.Line (i, pic.Height)-(pic.Height, 0), cselColr 'topright
  275.     End If
  276.     If cStyle(10) = 1 Then
  277.          pic.Line (i, 0)-(0, pic.Height), cselColr 'bottomright
  278.     End If
  279.     If cStyle(11) = 1 Then
  280.          pic.Line (pic.Height, i)-(0, pic.Height), cselColr 'bottomright
  281.     End If
  282.     If cStyle(12) = 1 Then
  283.          pic.Line (0, i)-(pic.Height, i), cselColr 'horz
  284.     End If
  285.     If cStyle(13) = 1 Then
  286.         pic.Line (i, pic.Height)-(i, 0), cselColr 'vert
  287.     End If
  288.     If cStyle(14) = 1 Then
  289.        pic.Line (0, i)-(i, 0), cselColr 'mesh1
  290.     End If
  291.     If cStyle(15) = 1 Then
  292.         pic.Line (i, pic.Height)-(pic.Height, i), cselColr 'mesh2
  293.     End If
  294.     If cStyle(16) = 1 Then
  295.         pic.Line (pic.Height - i, 0)-(pic.Height, i), cselColr 'mesh3
  296.     End If
  297.     If cStyle(17) = 1 Then
  298.         pic.Line (i, pic.Height)-(0, pic.Height - i), cselColr  'mesh4
  299.     End If
  300.     If cStyle(18) = 1 Then
  301.         pic.Line (0, i)-(pic.Height - i, pic.Height - i), cselColr '3D effect 1
  302.     End If
  303.     If cStyle(19) = 1 Then
  304.         pic.Line (pic.Height - i, pic.Height - i)-(i, 0), cselColr '3D effect 2
  305.     End If
  306.     If cStyle(20) = 1 Then
  307.         pic.Line (pic.Height - i, 0)-(i, pic.Height - i), cselColr '3D effect 3
  308.     End If
  309.     If cStyle(21) = 1 Then
  310.         pic.Line (i, pic.Height - i)-(pic.Height, i), cselColr '3D effect 4
  311.     End If
  312.     If cStyle(22) = 1 Then
  313.         pic.Line (pic.Height - i, i)-(0, pic.Height - i), cselColr '3D effect 5
  314.     End If
  315.     If cStyle(23) = 1 Then
  316.         pic.Line (i, pic.Height)-(pic.Height - i, i), cselColr '3D effect 6
  317.     End If
  318.     If cStyle(24) = 1 Then
  319.         pic.Line (pic.Height - i, pic.Height - i)-(i, pic.Height), cselColr '3D effect 7
  320.     End If
  321.     If cStyle(25) = 1 Then
  322.         pic.Line (pic.Height, i)-(pic.Height - i, pic.Height - i), cselColr '3D effect 8
  323.     End If
  324.     If cStyle(26) = 1 Then
  325.         pic.Line (pic.Height - i, pic.Height - i)-(i, pic.Height - i), cselColr 'effect1
  326.     End If
  327.     If cStyle(27) = 1 Then
  328.         pic.Line (pic.Height - i, i)-(pic.Height - i, pic.Height - i), cselColr 'effect2
  329.     End If
  330.     If cStyle(28) = 1 Then '
  331.         pic.Line (pic.Height, 0)-(pic.Height - i, pic.Height - i), cselColr 'box effect
  332.     End If
  333.     If cStyle(29) = 1 Then '
  334.         pic.Line (pic.Height - i, pic.Height - i)-(0, pic.Height), cselColr 'box effect
  335.     End If
  336.     If cStyle(30) = 1 Then
  337.         pic.Line (0, 0)-(i, pic.Height - i), cselColr 'box effect
  338.     End If
  339.     If cStyle(31) = 1 Then
  340.         pic.Line (pic.Height - i, i)-(pic.Height, pic.Height), cselColr 'box effect
  341.     End If
  342.     If cStyle(32) = 1 Then
  343.         pic.Line (i, pic.Height / 2)-(pic.Height - i, i), cselColr '3D
  344.     End If
  345.     If cStyle(33) = 1 Then
  346.          pic.Line (i, i)-(pic.Height / 2, pic.Height - i), cselColr '3D
  347.     End If
  348.     If cStyle(34) = 1 Then
  349.         pic.Line (0, i)-(pic.Height, pic.Height - i), cselColr 'effect5
  350.     End If
  351.     If cStyle(35) = 1 Then
  352.         pic.Line (pic.Height - i, 0)-(i, pic.Height), cselColr  'effect6
  353.     End If
  354.     If cStyle(36) = 1 Then
  355.         pic.Line (i, pic.Height)-(i, i), cselColr   'line^1
  356.     End If
  357.     If cStyle(37) = 1 Then
  358.         pic.Line (i, pic.Height - i)-(i, pic.Height), cselColr  'line^2
  359.     End If
  360.     If cStyle(38) = 1 Then
  361.         pic.Line (i, 0)-(i, pic.Height - i), cselColr 'lineV1
  362.     End If
  363.     If cStyle(39) = 1 Then
  364.         pic.Line (i, 0)-(i, i), cselColr   'lineV2
  365.     End If
  366.     If cStyle(40) = 1 Then
  367.         pic.Line (pic.Height, i)-(i, i), cselColr  'line<1
  368.     End If
  369.     If cStyle(41) = 1 Then
  370.         pic.Line (pic.Height, i)-(pic.Height - i, i), cselColr 'line<2
  371.     End If
  372.     If cStyle(42) = 1 Then
  373.         pic.Line (0, i)-(pic.Height - i, i), cselColr 'line>1
  374.     End If
  375.     If cStyle(43) = 1 Then
  376.         pic.Line (0, i)-(i, i), cselColr 'line>2
  377.     End If
  378.     If cStyle(44) = 1 Then
  379.         pic.Line (pic.Height - i / 2, i)-(i, pic.Height - i), cselColr '3D
  380.     End If
  381.     If cStyle(45) = 1 Then
  382.         pic.Line (i, (pic.Height / 2) - i / 2)-(pic.Height - i, i), cselColr '3D
  383.     End If
  384.     If cStyle(46) = 1 Then
  385.         pic.Line (pic.Height - i, i)-(i, pic.Height - i / 2), cselColr '3D
  386.     End If
  387.     If cStyle(47) = 1 Then
  388.         pic.Line (i, pic.Height - i)-((pic.Height / 2) - i / 2, i), cselColr '3D
  389.     End If
  390.     If cStyle(48) = 1 Then
  391.         pic.Line (pic.Height - i, pic.Height - i / 2)-(i, i), cselColr '3D
  392.     End If
  393.     If cStyle(49) = 1 Then
  394.         pic.Line (i, i)-(pic.Height - i / 2, pic.Height - i), cselColr '3D
  395.     End If
  396.     If cStyle(50) = 1 Then
  397.         pic.Line ((pic.Height / 2) - i / 2, pic.Height - i)-(i, i), cselColr '3D
  398.     End If
  399.     If cStyle(51) = 1 Then
  400.         pic.Line (i, i)-(pic.Height - i, (pic.Height / 2) - i / 2), cselColr '3D
  401.     End If
  402.     If cStyle(52) = 1 Then
  403.         pic.Line (pic.Height / 2, i)-(i, pic.Height / 2), cselColr  'SlantBox
  404.     End If
  405.     If cStyle(53) = 1 Then
  406.         pic.Line (pic.Height - i, pic.Height / 2)-(pic.Height / 2, i), cselColr 'SlantBox
  407.     End If
  408.     If cStyle(54) = 1 Then
  409.         pic.Line (pic.Height - i, i)-(0, pic.Height - i / 2), cselColr '3D
  410.     End If
  411.     If cStyle(55) = 1 Then
  412.         pic.Line (pic.Height / 2 - i / 2, pic.Height)-(i, pic.Height - i), cselColr '3D
  413.     End If
  414.     If cStyle(56) = 1 Then
  415.         pic.Line (pic.Height - i / 2, 0)-(i, pic.Height - i), cselColr '3D
  416.     End If
  417.     If cStyle(57) = 1 Then
  418.         pic.Line (pic.Height, pic.Height / 2 - i / 2)-(pic.Height - i, i), cselColr  '3D
  419.     End If
  420.     If cStyle(58) = 1 Then
  421.         pic.Line (pic.Height, pic.Height - i / 2)-(i, i), cselColr '3D effect 8
  422.     End If
  423.     If cStyle(59) = 1 Then
  424.         pic.Line (pic.Height - i / 2, pic.Height)-(i, i), cselColr '3D effect 8
  425.     End If
  426.     If cStyle(60) = 1 Then
  427.         pic.Line (0, pic.Height / 2 - i / 2)-(i, i), cselColr '3D effect 8
  428.     End If
  429.     If cStyle(61) = 1 Then
  430.         pic.Line (pic.Height / 2 - i / 2, 0)-(i, i), cselColr '3D effect 8
  431.     End If
  432.     If cStyle(62) = 1 Then
  433.         pic.Line (pic.Height / 2, i)-(0, pic.Height / 2), cselColr 'Box
  434.     End If
  435.     If cStyle(63) = 1 Then
  436.         pic.Line (pic.Height / 2, pic.Height - i)-(pic.Height, pic.Height / 2), cselColr 'Box
  437.     End If
  438.     If cStyle(64) = 1 Then
  439.         pic.Line (i, pic.Height / 2)-(pic.Height / 2, 0), cselColr  'Box
  440.     End If
  441.     If cStyle(65) = 1 Then
  442.         pic.Line (pic.Height / 2, pic.Height)-(i, pic.Height / 2), cselColr 'Box
  443.     End If
  444.     If cStyle(66) = 1 Then
  445.         pic.Line (pic.Height - i, 0)-(i, pic.Height / 2), cselColr '3D
  446.     End If
  447.     If cStyle(67) = 1 Then
  448.         pic.Line (i, pic.Height / 2)-(pic.Height - i, pic.Height), cselColr '3D
  449.     End If
  450.     If cStyle(68) = 1 Then
  451.         pic.Line (0, i)-(pic.Height / 2, pic.Height - i), cselColr  '3D
  452.     End If
  453.     If cStyle(69) = 1 Then
  454.         pic.Line (pic.Height, i)-(pic.Height / 2, pic.Height - i), cselColr '3D
  455.     End If
  456.     If cStyle(70) = 1 Then
  457.         pic.Line (i, pic.Height / 2)-(0, 0), cselColr  'trianglestyle
  458.     End If
  459.     If cStyle(71) = 1 Then
  460.         pic.Line (0, pic.Height)-(i, pic.Height / 2), cselColr  'trianglestyle
  461.     End If
  462.     If cStyle(72) = 1 Then
  463.         pic.Line (i, pic.Height / 2)-(pic.Height, 0), cselColr 'trianglestyle
  464.     End If
  465.     If cStyle(73) = 1 Then
  466.         pic.Line (pic.Height, pic.Height)-(i, pic.Height / 2), cselColr  'trianglestyle
  467.     End If
  468.     If cStyle(74) = 1 Then
  469.         pic.Line (0, pic.Height / 2)-(i, pic.Height), cselColr 'trianglestyle
  470.     End If
  471.     If cStyle(75) = 1 Then
  472.         pic.Line (i, 0)-(0, pic.Height / 2), cselColr  'trianglestyle
  473.     End If
  474.     If cStyle(76) = 1 Then
  475.         pic.Line (pic.Height, pic.Height / 2)-(i, pic.Height), cselColr  'trianglestyle
  476.     End If
  477.     If cStyle(77) = 1 Then
  478.         pic.Line (i, 0)-(pic.Height, pic.Height / 2), cselColr  'trianglestyle
  479.     End If
  480.     If cStyle(78) = 1 Then
  481.         pic.Line (pic.Height / 2, i)-(pic.Height - i / 2, pic.Height), cselColr 'Isocelesstyle
  482.     End If
  483.     If cStyle(79) = 1 Then
  484.         pic.Line (pic.Height / 2, pic.Height - i)-(pic.Height / 2 - i / 2, pic.Height), cselColr 'Isocelesstyle
  485.     End If
  486.     If cStyle(80) = 1 Then
  487.         pic.Line (pic.Height - i / 2, 0)-(pic.Height / 2, pic.Height - i), cselColr 'Isocelesstyle
  488.     End If
  489.     If cStyle(81) = 1 Then
  490.         pic.Line (pic.Height / 2 - i / 2, 0)-(pic.Height / 2, i), cselColr  'Isocelesstyle
  491.     End If
  492.     If cStyle(82) = 1 Then
  493.         pic.Line (0, pic.Height / 2 - i / 2)-(i, pic.Height / 2), cselColr 'Isocelesstyle
  494.     End If
  495.     If cStyle(83) = 1 Then
  496.         pic.Line (0, pic.Height / 2 + i / 2)-(i, pic.Height / 2), cselColr 'Isocelesstyle
  497.     End If
  498.     If cStyle(84) = 1 Then
  499.         pic.Line (pic.Height - i, pic.Height / 2)-(pic.Height, pic.Height / 2 - i / 2), cselColr 'Isocelesstyle
  500.     End If
  501.     If cStyle(85) = 1 Then
  502.         pic.Line (i, pic.Height / 2)-(pic.Height, pic.Height - i / 2), cselColr 'Isocelesstyle
  503.     End If
  504.     If cStyle(86) = 1 Then
  505.         pic.Line (0, pic.Height / 2)-(pic.Height, i), cselColr 'comet
  506.     End If
  507.     If cStyle(87) = 1 Then
  508.         pic.Line (0, i)-(pic.Height, pic.Height / 2), cselColr 'comet
  509.     End If
  510.     If cStyle(88) = 1 Then
  511.         pic.Line (i, pic.Height)-(pic.Height / 2, 0), cselColr 'comet
  512.     End If
  513.     If cStyle(89) = 1 Then
  514.         pic.Line (i, 0)-(pic.Height / 2, pic.Height), cselColr 'comet
  515.     End If
  516.     If cStyle(90) = 1 Then
  517.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2 - i), i, cselColr 'circles
  518.     End If
  519.     If cStyle(91) = 1 Then
  520.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2 - i), i, cselColr 'circles
  521.     End If
  522.     If cStyle(92) = 1 Then
  523.         pic.Circle (pic.ScaleHeight / 2 - i, pic.ScaleWidth / 2 - i / 2), i, cselColr 'circles
  524.     End If
  525.     If cStyle(93) = 1 Then
  526.         pic.Circle (pic.ScaleHeight / 2 - i, pic.ScaleWidth / 2 + i / 2), i, cselColr 'circles
  527.     End If
  528.     If cStyle(94) = 1 Then
  529.         pic.Circle (pic.ScaleHeight / 2 + i, pic.ScaleWidth / 2 + i / 2), i, cselColr 'circles
  530.     End If
  531.     If cStyle(95) = 1 Then
  532.         pic.Circle (pic.ScaleHeight / 2 + i, pic.ScaleWidth / 2 - i / 2), i, cselColr 'circles
  533.     End If
  534.     If cStyle(96) = 1 Then
  535.         pic.Circle (pic.ScaleHeight / 2 + i / 2, pic.ScaleWidth / 2 + i), i, cselColr 'circles
  536.     End If
  537.     If cStyle(97) = 1 Then
  538.         pic.Circle (pic.ScaleHeight / 2 - i / 2, pic.ScaleWidth / 2 + i), i, cselColr 'circles
  539.     End If
  540.     If cStyle(98) = 1 Then
  541.         pic.Circle (pic.ScaleWidth / (i + 1), pic.ScaleHeight / (i + 1)), i, cselColr 'Corner circles
  542.     End If
  543.     If cStyle(99) = 1 Then
  544.         pic.Circle (pic.ScaleWidth, 0), i, cselColr 'Corner circles
  545.     End If
  546.     If cStyle(100) = 1 Then
  547.         pic.Circle (0, pic.ScaleHeight), i, cselColr 'Corner circles
  548.     End If
  549.     If cStyle(101) = 1 Then
  550.         pic.Circle (pic.ScaleWidth, pic.ScaleWidth), i, cselColr 'Corner circles
  551.     End If
  552.     If cStyle(102) = 1 Then
  553.         pic.Circle (pic.ScaleWidth / 2 - (i + 1), pic.ScaleHeight / 2 - (i + 1)), i, cselColr 'circles w/Box style
  554.     End If
  555.     If cStyle(103) = 1 Then
  556.         pic.Circle (pic.ScaleWidth / 2 + (i + 1), pic.ScaleHeight / 2 - (i + 1)), i, cselColr 'circles w/Box style
  557.     End If
  558.     If cStyle(104) = 1 Then
  559.         pic.Circle (pic.ScaleHeight / 2 - i, pic.ScaleWidth / 2 + i), i, cselColr 'circles w/Box style
  560.     End If
  561.     If cStyle(105) = 1 Then
  562.         pic.Circle (pic.ScaleHeight / 2 + i, pic.ScaleWidth / 2 + i), i, cselColr 'circles w/Box style
  563.     End If
  564.     If cStyle(106) = 1 Then
  565.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2 - i / 2), i, cselColr 'circles lunar style
  566.     End If
  567.     If cStyle(107) = 1 Then
  568.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2 + i / 2), i, cselColr 'circles lunar style
  569.     End If
  570.     If cStyle(108) = 1 Then
  571.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2 - i / 2), i, cselColr 'circles lunar style
  572.     End If
  573.     If cStyle(109) = 1 Then
  574.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2 + i / 2), i, cselColr 'circles lunar style
  575.     End If
  576.     If cStyle(110) = 1 Then
  577.         pic.Circle (pic.ScaleWidth / 2, pic.ScaleHeight), i, cselColr 'circles center Border style
  578.     End If
  579.     If cStyle(111) = 1 Then
  580.         pic.Circle (pic.ScaleHeight, pic.ScaleWidth / 2), i, cselColr 'circles center Border style
  581.     End If
  582.     If cStyle(112) = 1 Then
  583.         pic.Circle (pic.ScaleWidth / 2, 0), i, cselColr 'circles center Border style
  584.     End If
  585.     If cStyle(113) = 1 Then
  586.         pic.Circle (0, pic.ScaleWidth / 2), i, cselColr 'circles center Border style
  587.     End If
  588.     If cStyle(114) = 1 Then
  589.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2), i, cselColr 'circles offset center
  590.     End If
  591.     If cStyle(115) = 1 Then
  592.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2), i, cselColr 'circles offset center
  593.     End If
  594.     If cStyle(116) = 1 Then
  595.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleWidth / 2 - i / 2), i, cselColr 'circles offset center
  596.     End If
  597.     If cStyle(117) = 1 Then
  598.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleWidth / 2 + i / 2), i, cselColr 'circles offset center
  599.     End If
  600.     If cStyle(118) = 1 Then
  601.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleWidth / 2), i, cselColr 'circle center
  602.     End If
  603.     If cStyle(119) = 1 Then
  604.         pic.Circle (pic.ScaleHeight, i), i, cselColr 'circles corner to corner
  605.     End If
  606.     If cStyle(120) = 1 Then
  607.         pic.Circle (pic.ScaleHeight - i, 0), i, cselColr 'circles corner to corner
  608.     End If
  609.     If cStyle(121) = 1 Then
  610.         pic.Circle (0, pic.ScaleHeight - i), i, cselColr 'circles corner to corner
  611.     End If
  612.     If cStyle(122) = 1 Then
  613.         pic.Circle (i, pic.ScaleHeight), i, cselColr 'circles corner to corner
  614.     End If
  615.     If cStyle(123) = 1 Then
  616.         pic.Circle (i, 0), i, cselColr 'circles corner to corner
  617.     End If
  618.     If cStyle(124) = 1 Then
  619.         pic.Circle (0, i), i, cselColr 'circles corner to corner
  620.     End If
  621.     If cStyle(125) = 1 Then
  622.         pic.Circle (pic.ScaleHeight, pic.ScaleHeight - i), i, cselColr 'circles corner to corner
  623.     End If
  624.     If cStyle(126) = 1 Then
  625.         pic.Circle (pic.ScaleHeight - i, pic.ScaleHeight), i, cselColr 'circles corner to corner
  626.     End If
  627.     If cStyle(127) = 1 Then
  628.         pic.Circle (i, pic.ScaleHeight / 2), i, cselColr 'Circles Sides
  629.     End If
  630.     If cStyle(128) = 1 Then
  631.         pic.Circle (pic.ScaleHeight / 2, i), i, cselColr 'Circles Sides
  632.     End If
  633.     If cStyle(129) = 1 Then
  634.         pic.Circle (pic.ScaleHeight - i, pic.ScaleHeight / 2), i, cselColr 'Circles Sides
  635.     End If
  636.     If cStyle(130) = 1 Then
  637.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleHeight - i), i, cselColr 'Circles Sides
  638.     End If
  639.     If cStyle(131) = 1 Then '*******************new ones
  640.         pic.Line (pic.Width / 10, i + pic.Width / 10)-(0, i), cselColr 'border style 1a
  641.     End If
  642.     If cStyle(132) = 1 Then
  643.         pic.Line (0, i + pic.Width / 10)-(pic.Width / 10, i), cselColr 'border style 1b
  644.     End If
  645.     If cStyle(133) = 1 Then
  646.         pic.Line (i, pic.Width)-(i + pic.Width / 10, pic.Width - pic.Width / 10), cselColr  'border side 2a
  647.     End If
  648.     If cStyle(134) = 1 Then
  649.         pic.Line (i + pic.Width / 10, pic.Width)-(i, pic.Width - pic.Width / 10), cselColr  'border side 2b
  650.     End If
  651.     If cStyle(135) = 1 Then
  652.         pic.Line (pic.Width, i + pic.Width / 10)-(pic.Width - pic.Width / 10, i), cselColr 'border side 3a
  653.     End If
  654.     If cStyle(136) = 1 Then
  655.         pic.Line (pic.Width - pic.Width / 10, i + pic.Width / 10)-(pic.Width, i), cselColr 'border side 3b
  656.     End If
  657.     If cStyle(137) = 1 Then
  658.         pic.Line (i, pic.Width / 10)-(i + pic.Width / 10, 0), cselColr 'border side 4a
  659.     End If
  660.     If cStyle(138) = 1 Then
  661.         pic.Line (i + pic.Width / 10, pic.Width / 10)-(i, 0), cselColr 'border side 4b
  662.     End If
  663.     If cStyle(139) = 1 Then '*********border straight style  new
  664.         pic.Line (i, 0)-(i, pic.Width / 10), cselColr 'border straight 1
  665.     End If
  666.     If cStyle(140) = 1 Then
  667.         pic.Line (0, i)-(pic.Width / 10, i), cselColr 'border straight 2
  668.     End If
  669.     If cStyle(141) = 1 Then
  670.         pic.Line (i, pic.Width)-(i, pic.Width - pic.Width / 10), cselColr 'border straight 4
  671.     End If
  672.     If cStyle(142) = 1 Then
  673.         pic.Line (pic.Width, i)-(pic.Width - pic.Width / 10, i), cselColr 'border straight 4
  674.     End If
  675.     If cStyle(143) = 1 Then '******** Slant centered style  new
  676.         pic.Line (0, i)-(pic.Width / 2, i + pic.Width / 10), cselColr 'Slant centered 1
  677.     End If
  678.     If cStyle(144) = 1 Then
  679.         pic.Line (pic.Width / 2, i + pic.Width / 10)-(pic.Width, i), cselColr 'Slant centered 2
  680.     End If
  681.     If cStyle(145) = 1 Then
  682.         pic.Line (pic.Width / 2, i)-(pic.Width, i + pic.Width / 10), cselColr  'Slant centered 3
  683.     End If
  684.     If cStyle(146) = 1 Then
  685.         pic.Line (0, i + pic.Width / 10)-(pic.Width / 2, i), cselColr 'Slant centered 4
  686.     End If
  687.     If cStyle(147) = 1 Then
  688.         pic.Line (i, 0)-(i + pic.Width / 10, pic.Width / 2), cselColr 'Slant centered 5
  689.     End If
  690.     If cStyle(148) = 1 Then
  691.         pic.Line (i + pic.Width / 10, pic.Width / 2)-(i, pic.Width), cselColr  'Slant centered 6
  692.     End If
  693.     If cStyle(149) = 1 Then
  694.         pic.Line (i, pic.Width / 2)-(i + pic.Width / 10, pic.Width), cselColr  'Slant centered 7
  695.     End If
  696.     If cStyle(150) = 1 Then
  697.         pic.Line (i + pic.Width / 10, 0)-(i, pic.Width / 2), cselColr 'Slant centered 8
  698.     End If
  699.             
  700. '      DoEvents
  701.      pic.Refresh
  702.      Update_Progress ((i * 100) / pic.Width), "Processing..."
  703.     Next i
  704.     
  705.     pic.ScaleMode = pScaleMode
  706.     pic.Picture = pic.Image
  707. Exit Sub
  708.  
  709. HandleErr:
  710. MsgBox Err.Description, vbCritical
  711. Exit Sub
  712. End Sub
  713.  
  714. 'choose where to go
  715. Sub MakeGrid(pic As PictureBox, ByVal numSteps)
  716. If pColMode = 0 Then
  717. Pattern_SColor pic, numSteps, cPatColor
  718. Else
  719. Pattern_CombColor pic, numSteps
  720. End If
  721. End Sub
  722.  
  723. 'draw pattern with a combination of given number of colors
  724. Sub Pattern_CombColor(pic As PictureBox, ByVal numSteps)
  725. Dim pScaleMode, i
  726.  
  727.  On Error GoTo HandleErr
  728.   
  729.   If numSteps = "" Then Exit Sub
  730.    If numSteps <= 0 Then Exit Sub
  731.     pScaleMode = pic.ScaleMode
  732.     pic.ScaleMode = vbTwips
  733.     pic.Picture = LoadPicture()
  734.     pic.FillStyle = 1
  735.     For i = 0 To pic.Width Step pic.Width / numSteps
  736.     If cStyle(0) = 1 Then
  737.         pic.Line (i, pic.Height)-(0, i), QBColor(i Mod TotColrs) '3D effect
  738.     End If
  739.     If cStyle(1) = 1 Then
  740.          pic.Line (i, 0)-(pic.Height, i), QBColor(i Mod TotColrs) '3D effect
  741.     End If
  742.     If cStyle(2) = 1 Then
  743.     pic.Line (0, pic.Height - i)-(i, 0), QBColor(i Mod TotColrs) '3D effect
  744.     End If
  745.     If cStyle(3) = 1 Then
  746.     pic.Line (pic.Height, pic.Height - i)-(i, pic.Height), QBColor(i Mod TotColrs)  '3D effect
  747.     End If
  748.     If cStyle(4) = 1 Then
  749.          pic.Line (i, pic.Height)-(0, 0), QBColor(i Mod TotColrs) 'topleft
  750.     End If
  751.     If cStyle(5) = 1 Then
  752.          pic.Line (0, 0)-(pic.Height, i), QBColor(i Mod TotColrs) 'topleft
  753.     End If
  754.     If cStyle(6) = 1 Then
  755.          pic.Line (pic.Height, pic.Height)-(i, 0), QBColor(i Mod TotColrs) 'bottomleft
  756.     End If
  757.     If cStyle(7) = 1 Then
  758.          pic.Line (pic.Height, pic.Height)-(0, i), QBColor(i Mod TotColrs) 'bottomleft
  759.     End If
  760.     If cStyle(8) = 1 Then
  761.          pic.Line (0, i)-(pic.Height, 0), QBColor(i Mod TotColrs) 'topright
  762.     End If
  763.     If cStyle(9) = 1 Then
  764.          pic.Line (i, pic.Height)-(pic.Height, 0), QBColor(i Mod TotColrs) 'topright
  765.     End If
  766.     If cStyle(10) = 1 Then
  767.          pic.Line (i, 0)-(0, pic.Height), QBColor(i Mod TotColrs) 'bottomright
  768.     End If
  769.     If cStyle(11) = 1 Then
  770.          pic.Line (pic.Height, i)-(0, pic.Height), QBColor(i Mod TotColrs) 'bottomright
  771.     End If
  772.     If cStyle(12) = 1 Then
  773.          pic.Line (0, i)-(pic.Height, i), QBColor(i Mod TotColrs) 'horz
  774.     End If
  775.     If cStyle(13) = 1 Then
  776.         pic.Line (i, pic.Height)-(i, 0), QBColor(i Mod TotColrs) 'vert
  777.     End If
  778.     If cStyle(14) = 1 Then
  779.        pic.Line (0, i)-(i, 0), QBColor(i Mod TotColrs) 'mesh1
  780.     End If
  781.     If cStyle(15) = 1 Then
  782.         pic.Line (i, pic.Height)-(pic.Height, i), QBColor(i Mod TotColrs) 'mesh2
  783.     End If
  784.     If cStyle(16) = 1 Then
  785.         pic.Line (pic.Height - i, 0)-(pic.Height, i), QBColor(i Mod TotColrs) 'mesh3
  786.     End If
  787.     If cStyle(17) = 1 Then
  788.         pic.Line (i, pic.Height)-(0, pic.Height - i), QBColor(i Mod TotColrs)  'mesh4
  789.     End If
  790.     If cStyle(18) = 1 Then
  791.         pic.Line (0, i)-(pic.Height - i, pic.Height - i), QBColor(i Mod TotColrs) '3D effect 1
  792.     End If
  793.     If cStyle(19) = 1 Then
  794.         pic.Line (pic.Height - i, pic.Height - i)-(i, 0), QBColor(i Mod TotColrs) '3D effect 2
  795.     End If
  796.     If cStyle(20) = 1 Then
  797.         pic.Line (pic.Height - i, 0)-(i, pic.Height - i), QBColor(i Mod TotColrs) '3D effect 3
  798.     End If
  799.     If cStyle(21) = 1 Then
  800.         pic.Line (i, pic.Height - i)-(pic.Height, i), QBColor(i Mod TotColrs) '3D effect 4
  801.     End If
  802.     If cStyle(22) = 1 Then
  803.         pic.Line (pic.Height - i, i)-(0, pic.Height - i), QBColor(i Mod TotColrs) '3D effect 5
  804.     End If
  805.     If cStyle(23) = 1 Then
  806.         pic.Line (i, pic.Height)-(pic.Height - i, i), QBColor(i Mod TotColrs) '3D effect 6
  807.     End If
  808.     If cStyle(24) = 1 Then
  809.         pic.Line (pic.Height - i, pic.Height - i)-(i, pic.Height), QBColor(i Mod TotColrs) '3D effect 7
  810.     End If
  811.     If cStyle(25) = 1 Then
  812.         pic.Line (pic.Height, i)-(pic.Height - i, pic.Height - i), QBColor(i Mod TotColrs) '3D effect 8
  813.     End If
  814.     If cStyle(26) = 1 Then
  815.         pic.Line (pic.Height - i, pic.Height - i)-(i, pic.Height - i), QBColor(i Mod TotColrs) 'effect1
  816.     End If
  817.     If cStyle(27) = 1 Then
  818.         pic.Line (pic.Height - i, i)-(pic.Height - i, pic.Height - i), QBColor(i Mod TotColrs) 'effect2
  819.     End If
  820.     If cStyle(28) = 1 Then '
  821.         pic.Line (pic.Height, 0)-(pic.Height - i, pic.Height - i), QBColor(i Mod TotColrs) 'box effect
  822.     End If
  823.     If cStyle(29) = 1 Then '
  824.         pic.Line (pic.Height - i, pic.Height - i)-(0, pic.Height), QBColor(i Mod TotColrs) 'box effect
  825.     End If
  826.     If cStyle(30) = 1 Then
  827.         pic.Line (0, 0)-(i, pic.Height - i), QBColor(i Mod TotColrs) 'box effect
  828.     End If
  829.     If cStyle(31) = 1 Then
  830.         pic.Line (pic.Height - i, i)-(pic.Height, pic.Height), QBColor(i Mod TotColrs) 'box effect
  831.     End If
  832.     If cStyle(32) = 1 Then
  833.         pic.Line (i, pic.Height / 2)-(pic.Height - i, i), QBColor(i Mod TotColrs) '3D
  834.     End If
  835.     If cStyle(33) = 1 Then
  836.          pic.Line (i, i)-(pic.Height / 2, pic.Height - i), QBColor(i Mod TotColrs) '3D
  837.     End If
  838.     If cStyle(34) = 1 Then
  839.         pic.Line (0, i)-(pic.Height, pic.Height - i), QBColor(i Mod TotColrs) 'effect5
  840.     End If
  841.     If cStyle(35) = 1 Then
  842.         pic.Line (pic.Height - i, 0)-(i, pic.Height), QBColor(i Mod TotColrs)  'effect6
  843.     End If
  844.     If cStyle(36) = 1 Then
  845.         pic.Line (i, pic.Height)-(i, i), QBColor(i Mod TotColrs)   'line^1
  846.     End If
  847.     If cStyle(37) = 1 Then
  848.         pic.Line (i, pic.Height - i)-(i, pic.Height), QBColor(i Mod TotColrs)  'line^2
  849.     End If
  850.     If cStyle(38) = 1 Then
  851.         pic.Line (i, 0)-(i, pic.Height - i), QBColor(i Mod TotColrs) 'lineV1
  852.     End If
  853.     If cStyle(39) = 1 Then
  854.         pic.Line (i, 0)-(i, i), QBColor(i Mod TotColrs)   'lineV2
  855.     End If
  856.     If cStyle(40) = 1 Then
  857.         pic.Line (pic.Height, i)-(i, i), QBColor(i Mod TotColrs)  'line<1
  858.     End If
  859.     If cStyle(41) = 1 Then
  860.         pic.Line (pic.Height, i)-(pic.Height - i, i), QBColor(i Mod TotColrs)  'line<2
  861.     End If
  862.     If cStyle(42) = 1 Then
  863.         pic.Line (0, i)-(pic.Height - i, i), QBColor(i Mod TotColrs) 'line>1
  864.     End If
  865.     If cStyle(43) = 1 Then
  866.         pic.Line (0, i)-(i, i), QBColor(i Mod TotColrs) 'line>2
  867.     End If
  868.     If cStyle(44) = 1 Then
  869.         pic.Line (pic.Height - i / 2, i)-(i, pic.Height - i), QBColor(i Mod TotColrs) '3D
  870.     End If
  871.     If cStyle(45) = 1 Then
  872.         pic.Line (i, (pic.Height / 2) - i / 2)-(pic.Height - i, i), QBColor(i Mod TotColrs) '3D
  873.     End If
  874.     If cStyle(46) = 1 Then
  875.         pic.Line (pic.Height - i, i)-(i, pic.Height - i / 2), QBColor(i Mod TotColrs) '3D
  876.     End If
  877.     If cStyle(47) = 1 Then
  878.         pic.Line (i, pic.Height - i)-((pic.Height / 2) - i / 2, i), QBColor(i Mod TotColrs) '3D
  879.     End If
  880.     If cStyle(48) = 1 Then
  881.         pic.Line (pic.Height - i, pic.Height - i / 2)-(i, i), QBColor(i Mod TotColrs) '3D
  882.     End If
  883.     If cStyle(49) = 1 Then
  884.         pic.Line (i, i)-(pic.Height - i / 2, pic.Height - i), QBColor(i Mod TotColrs) '3D
  885.     End If
  886.     If cStyle(50) = 1 Then
  887.         pic.Line ((pic.Height / 2) - i / 2, pic.Height - i)-(i, i), QBColor(i Mod TotColrs) '3D
  888.     End If
  889.     If cStyle(51) = 1 Then
  890.         pic.Line (i, i)-(pic.Height - i, (pic.Height / 2) - i / 2), QBColor(i Mod TotColrs) '3D
  891.     End If
  892.     If cStyle(52) = 1 Then
  893.         pic.Line (pic.Height / 2, i)-(i, pic.Height / 2), QBColor(i Mod TotColrs)  'SlantBox
  894.     End If
  895.     If cStyle(53) = 1 Then
  896.         pic.Line (pic.Height - i, pic.Height / 2)-(pic.Height / 2, i), QBColor(i Mod TotColrs) 'SlantBox
  897.     End If
  898.     If cStyle(54) = 1 Then
  899.         pic.Line (pic.Height - i, i)-(0, pic.Height - i / 2), QBColor(i Mod TotColrs) '3D
  900.     End If
  901.     If cStyle(55) = 1 Then
  902.         pic.Line (pic.Height / 2 - i / 2, pic.Height)-(i, pic.Height - i), QBColor(i Mod TotColrs) '3D
  903.     End If
  904.     If cStyle(56) = 1 Then
  905.         pic.Line (pic.Height - i / 2, 0)-(i, pic.Height - i), QBColor(i Mod TotColrs) '3D
  906.     End If
  907.     If cStyle(57) = 1 Then
  908.         pic.Line (pic.Height, pic.Height / 2 - i / 2)-(pic.Height - i, i), QBColor(i Mod TotColrs)  '3D
  909.     End If
  910.     If cStyle(58) = 1 Then
  911.         pic.Line (pic.Height, pic.Height - i / 2)-(i, i), QBColor(i Mod TotColrs) '3D effect 8
  912.     End If
  913.     If cStyle(59) = 1 Then
  914.         pic.Line (pic.Height - i / 2, pic.Height)-(i, i), QBColor(i Mod TotColrs) '3D effect 8
  915.     End If
  916.     If cStyle(60) = 1 Then
  917.         pic.Line (0, pic.Height / 2 - i / 2)-(i, i), QBColor(i Mod TotColrs) '3D effect 8
  918.     End If
  919.     If cStyle(61) = 1 Then
  920.         pic.Line (pic.Height / 2 - i / 2, 0)-(i, i), QBColor(i Mod TotColrs) '3D effect 8
  921.     End If
  922.     If cStyle(62) = 1 Then
  923.         pic.Line (pic.Height / 2, i)-(0, pic.Height / 2), QBColor(i Mod TotColrs) 'Box
  924.     End If
  925.     If cStyle(63) = 1 Then
  926.         pic.Line (pic.Height / 2, pic.Height - i)-(pic.Height, pic.Height / 2), QBColor(i Mod TotColrs) 'Box
  927.     End If
  928.     If cStyle(64) = 1 Then
  929.         pic.Line (i, pic.Height / 2)-(pic.Height / 2, 0), QBColor(i Mod TotColrs)  'Box
  930.     End If
  931.     If cStyle(65) = 1 Then
  932.         pic.Line (pic.Height / 2, pic.Height)-(i, pic.Height / 2), QBColor(i Mod TotColrs) 'Box
  933.     End If
  934.     If cStyle(66) = 1 Then
  935.         pic.Line (pic.Height - i, 0)-(i, pic.Height / 2), QBColor(i Mod TotColrs) '3D
  936.     End If
  937.     If cStyle(67) = 1 Then
  938.         pic.Line (i, pic.Height / 2)-(pic.Height - i, pic.Height), QBColor(i Mod TotColrs) '3D
  939.     End If
  940.     If cStyle(68) = 1 Then
  941.         pic.Line (0, i)-(pic.Height / 2, pic.Height - i), QBColor(i Mod TotColrs)  '3D
  942.     End If
  943.     If cStyle(69) = 1 Then
  944.         pic.Line (pic.Height, i)-(pic.Height / 2, pic.Height - i), QBColor(i Mod TotColrs) '3D
  945.     End If
  946.     If cStyle(70) = 1 Then
  947.         pic.Line (i, pic.Height / 2)-(0, 0), QBColor(i Mod TotColrs)  'trianglestyle
  948.     End If
  949.     If cStyle(71) = 1 Then
  950.         pic.Line (0, pic.Height)-(i, pic.Height / 2), QBColor(i Mod TotColrs)  'trianglestyle
  951.     End If
  952.     If cStyle(72) = 1 Then
  953.         pic.Line (i, pic.Height / 2)-(pic.Height, 0), QBColor(i Mod TotColrs)  'trianglestyle
  954.     End If
  955.     If cStyle(73) = 1 Then
  956.         pic.Line (pic.Height, pic.Height)-(i, pic.Height / 2), QBColor(i Mod TotColrs)  'trianglestyle
  957.     End If
  958.     If cStyle(74) = 1 Then
  959.         pic.Line (0, pic.Height / 2)-(i, pic.Height), QBColor(i Mod TotColrs)  'trianglestyle
  960.     End If
  961.     If cStyle(75) = 1 Then
  962.         pic.Line (i, 0)-(0, pic.Height / 2), QBColor(i Mod TotColrs)  'trianglestyle
  963.     End If
  964.     If cStyle(76) = 1 Then
  965.         pic.Line (pic.Height, pic.Height / 2)-(i, pic.Height), QBColor(i Mod TotColrs)  'trianglestyle
  966.     End If
  967.     If cStyle(77) = 1 Then
  968.         pic.Line (i, 0)-(pic.Height, pic.Height / 2), QBColor(i Mod TotColrs)  'trianglestyle
  969.     End If
  970.     If cStyle(78) = 1 Then
  971.         pic.Line (pic.Height / 2, i)-(pic.Height - i / 2, pic.Height), QBColor(i Mod TotColrs) 'Isocelesstyle
  972.     End If
  973.     If cStyle(79) = 1 Then
  974.         pic.Line (pic.Height / 2, pic.Height - i)-(pic.Height / 2 - i / 2, pic.Height), QBColor(i Mod TotColrs) 'Isocelesstyle
  975.     End If
  976.     If cStyle(80) = 1 Then
  977.         pic.Line (pic.Height - i / 2, 0)-(pic.Height / 2, pic.Height - i), QBColor(i Mod TotColrs) 'Isocelesstyle
  978.     End If
  979.     If cStyle(81) = 1 Then
  980.         pic.Line (pic.Height / 2 - i / 2, 0)-(pic.Height / 2, i), QBColor(i Mod TotColrs)  'Isocelesstyle
  981.     End If
  982.     If cStyle(82) = 1 Then
  983.         pic.Line (0, pic.Height / 2 - i / 2)-(i, pic.Height / 2), QBColor(i Mod TotColrs) 'Isocelesstyle
  984.     End If
  985.     If cStyle(83) = 1 Then
  986.         pic.Line (0, pic.Height / 2 + i / 2)-(i, pic.Height / 2), QBColor(i Mod TotColrs) 'Isocelesstyle
  987.     End If
  988.     If cStyle(84) = 1 Then
  989.         pic.Line (pic.Height - i, pic.Height / 2)-(pic.Height, pic.Height / 2 - i / 2), QBColor(i Mod TotColrs) 'Isocelesstyle
  990.     End If
  991.     If cStyle(85) = 1 Then
  992.         pic.Line (i, pic.Height / 2)-(pic.Height, pic.Height - i / 2), QBColor(i Mod TotColrs) 'Isocelesstyle
  993.     End If
  994.     If cStyle(86) = 1 Then
  995.         pic.Line (0, pic.Height / 2)-(pic.Height, i), QBColor(i Mod TotColrs) 'comet
  996.     End If
  997.     If cStyle(87) = 1 Then
  998.         pic.Line (0, i)-(pic.Height, pic.Height / 2), QBColor(i Mod TotColrs) 'comet
  999.     End If
  1000.     If cStyle(88) = 1 Then
  1001.         pic.Line (i, pic.Height)-(pic.Height / 2, 0), QBColor(i Mod TotColrs) 'comet
  1002.     End If
  1003.     If cStyle(89) = 1 Then
  1004.         pic.Line (i, 0)-(pic.Height / 2, pic.Height), QBColor(i Mod TotColrs) 'comet
  1005.     End If
  1006.     If cStyle(90) = 1 Then
  1007.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2 - i), i, QBColor(i Mod TotColrs) 'circles
  1008.     End If
  1009.     If cStyle(91) = 1 Then
  1010.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2 - i), i, QBColor(i Mod TotColrs) 'circles
  1011.     End If
  1012.     If cStyle(92) = 1 Then
  1013.         pic.Circle (pic.ScaleHeight / 2 - i, pic.ScaleWidth / 2 - i / 2), i, QBColor(i Mod TotColrs) 'circles
  1014.     End If
  1015.     If cStyle(93) = 1 Then
  1016.         pic.Circle (pic.ScaleHeight / 2 - i, pic.ScaleWidth / 2 + i / 2), i, QBColor(i Mod TotColrs) 'circles
  1017.     End If
  1018.     If cStyle(94) = 1 Then
  1019.         pic.Circle (pic.ScaleHeight / 2 + i, pic.ScaleWidth / 2 + i / 2), i, QBColor(i Mod TotColrs) 'circles
  1020.     End If
  1021.     If cStyle(95) = 1 Then
  1022.         pic.Circle (pic.ScaleHeight / 2 + i, pic.ScaleWidth / 2 - i / 2), i, QBColor(i Mod TotColrs) 'circles
  1023.     End If
  1024.     If cStyle(96) = 1 Then
  1025.         pic.Circle (pic.ScaleHeight / 2 + i / 2, pic.ScaleWidth / 2 + i), i, QBColor(i Mod TotColrs) 'circles
  1026.     End If
  1027.     If cStyle(97) = 1 Then
  1028.         pic.Circle (pic.ScaleHeight / 2 - i / 2, pic.ScaleWidth / 2 + i), i, QBColor(i Mod TotColrs) 'circles
  1029.     End If
  1030.     If cStyle(98) = 1 Then
  1031.         pic.Circle (pic.ScaleWidth / (i + 1), pic.ScaleHeight / (i + 1)), i, QBColor(i Mod TotColrs) 'Corner circles
  1032.     End If
  1033.     If cStyle(99) = 1 Then
  1034.         pic.Circle (pic.ScaleWidth, 0), i, QBColor(i Mod TotColrs) 'Corner circles
  1035.     End If
  1036.     If cStyle(100) = 1 Then
  1037.         pic.Circle (0, pic.ScaleHeight), i, QBColor(i Mod TotColrs) 'Corner circles
  1038.     End If
  1039.     If cStyle(101) = 1 Then
  1040.         pic.Circle (pic.ScaleWidth, pic.ScaleWidth), i, QBColor(i Mod TotColrs) 'Corner circles
  1041.     End If
  1042.     If cStyle(102) = 1 Then
  1043.         pic.Circle (pic.ScaleWidth / 2 - (i + 1), pic.ScaleHeight / 2 - (i + 1)), i, QBColor(i Mod TotColrs) 'circles w/Box style
  1044.     End If
  1045.     If cStyle(103) = 1 Then
  1046.         pic.Circle (pic.ScaleWidth / 2 + (i + 1), pic.ScaleHeight / 2 - (i + 1)), i, QBColor(i Mod TotColrs) 'circles w/Box style
  1047.     End If
  1048.     If cStyle(104) = 1 Then
  1049.         pic.Circle (pic.ScaleHeight / 2 - i, pic.ScaleWidth / 2 + i), i, QBColor(i Mod TotColrs) 'circles w/Box style
  1050.     End If
  1051.     If cStyle(105) = 1 Then
  1052.         pic.Circle (pic.ScaleHeight / 2 + i, pic.ScaleWidth / 2 + i), i, QBColor(i Mod TotColrs) 'circles w/Box style
  1053.     End If
  1054.     If cStyle(106) = 1 Then
  1055.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2 - i / 2), i, QBColor(i Mod TotColrs) 'circles lunar style
  1056.     End If
  1057.     If cStyle(107) = 1 Then
  1058.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2 + i / 2), i, QBColor(i Mod TotColrs) 'circles lunar style
  1059.     End If
  1060.     If cStyle(108) = 1 Then
  1061.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2 - i / 2), i, QBColor(i Mod TotColrs) 'circles lunar style
  1062.     End If
  1063.     If cStyle(109) = 1 Then
  1064.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2 + i / 2), i, QBColor(i Mod TotColrs) 'circles lunar style
  1065.     End If
  1066.     If cStyle(110) = 1 Then
  1067.         pic.Circle (pic.ScaleWidth / 2, pic.ScaleHeight), i, QBColor(i Mod TotColrs) 'circles center Border style
  1068.     End If
  1069.     If cStyle(111) = 1 Then
  1070.         pic.Circle (pic.ScaleHeight, pic.ScaleWidth / 2), i, QBColor(i Mod TotColrs) 'circles center Border style
  1071.     End If
  1072.     If cStyle(112) = 1 Then
  1073.         pic.Circle (pic.ScaleWidth / 2, 0), i, QBColor(i Mod TotColrs) 'circles center Border style
  1074.     End If
  1075.     If cStyle(113) = 1 Then
  1076.         pic.Circle (0, pic.ScaleWidth / 2), i, QBColor(i Mod TotColrs) 'circles center Border style
  1077.     End If
  1078.     If cStyle(114) = 1 Then
  1079.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2), i, QBColor(i Mod TotColrs) 'circles offset center
  1080.     End If
  1081.     If cStyle(115) = 1 Then
  1082.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2), i, QBColor(i Mod TotColrs) 'circles offset center
  1083.     End If
  1084.     If cStyle(116) = 1 Then
  1085.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleWidth / 2 - i / 2), i, QBColor(i Mod TotColrs) 'circles offset center
  1086.     End If
  1087.     If cStyle(117) = 1 Then
  1088.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleWidth / 2 + i / 2), i, QBColor(i Mod TotColrs) 'circles offset center
  1089.     End If
  1090.     If cStyle(118) = 1 Then
  1091.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleWidth / 2), i, QBColor(i Mod TotColrs) 'circle center
  1092.     End If
  1093.     If cStyle(119) = 1 Then
  1094.         pic.Circle (pic.ScaleHeight, i), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1095.     End If
  1096.     If cStyle(120) = 1 Then
  1097.         pic.Circle (pic.ScaleHeight - i, 0), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1098.     End If
  1099.     If cStyle(121) = 1 Then
  1100.         pic.Circle (0, pic.ScaleHeight - i), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1101.     End If
  1102.     If cStyle(122) = 1 Then
  1103.         pic.Circle (i, pic.ScaleHeight), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1104.     End If
  1105.     If cStyle(123) = 1 Then
  1106.         pic.Circle (i, 0), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1107.     End If
  1108.     If cStyle(124) = 1 Then
  1109.         pic.Circle (0, i), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1110.     End If
  1111.     If cStyle(125) = 1 Then
  1112.         pic.Circle (pic.ScaleHeight, pic.ScaleHeight - i), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1113.     End If
  1114.     If cStyle(126) = 1 Then
  1115.         pic.Circle (pic.ScaleHeight - i, pic.ScaleHeight), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1116.     End If
  1117.     If cStyle(127) = 1 Then
  1118.         pic.Circle (i, pic.ScaleHeight / 2), i, QBColor(i Mod TotColrs) 'Circles Sides
  1119.     End If
  1120.     If cStyle(128) = 1 Then
  1121.         pic.Circle (pic.ScaleHeight / 2, i), i, QBColor(i Mod TotColrs) 'Circles Sides
  1122.     End If
  1123.     If cStyle(129) = 1 Then
  1124.         pic.Circle (pic.ScaleHeight - i, pic.ScaleHeight / 2), i, QBColor(i Mod TotColrs) 'Circles Sides
  1125.     End If
  1126.     If cStyle(130) = 1 Then
  1127.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleHeight - i), i, QBColor(i Mod TotColrs) 'Circles Sides
  1128.     End If
  1129.     If cStyle(131) = 1 Then '*******************new ones
  1130.         pic.Line (pic.Width / 10, i + pic.Width / 10)-(0, i), QBColor(i Mod TotColrs) 'border style 1a
  1131.     End If
  1132.     If cStyle(132) = 1 Then
  1133.         pic.Line (0, i + pic.Width / 10)-(pic.Width / 10, i), QBColor(i Mod TotColrs) 'border style 1b
  1134.     End If
  1135.     If cStyle(133) = 1 Then
  1136.         pic.Line (i, pic.Width)-(i + pic.Width / 10, pic.Width - pic.Width / 10), QBColor(i Mod TotColrs)  'border side 2a
  1137.     End If
  1138.     If cStyle(134) = 1 Then
  1139.         pic.Line (i + pic.Width / 10, pic.Width)-(i, pic.Width - pic.Width / 10), QBColor(i Mod TotColrs)  'border side 2b
  1140.     End If
  1141.     If cStyle(135) = 1 Then
  1142.         pic.Line (pic.Width, i + pic.Width / 10)-(pic.Width - pic.Width / 10, i), QBColor(i Mod TotColrs) 'border side 3a
  1143.     End If
  1144.     If cStyle(136) = 1 Then
  1145.         pic.Line (pic.Width - pic.Width / 10, i + pic.Width / 10)-(pic.Width, i), QBColor(i Mod TotColrs) 'border side 3b
  1146.     End If
  1147.     If cStyle(137) = 1 Then
  1148.         pic.Line (i + pic.Width / 10, 0)-(i, pic.Width / 10), QBColor(i Mod TotColrs) 'border side 4a
  1149.     End If
  1150.     If cStyle(138) = 1 Then
  1151.         pic.Line (i, 0)-(i + pic.Width / 10, pic.Width / 10), QBColor(i Mod TotColrs) 'border side 4b
  1152.     End If
  1153.     If cStyle(139) = 1 Then '*********border straight style  new
  1154.         pic.Line (i, 0)-(i, pic.Width / 10), QBColor(i Mod TotColrs) 'border straight 1
  1155.     End If
  1156.     If cStyle(140) = 1 Then
  1157.         pic.Line (0, i)-(pic.Width / 10, i), QBColor(i Mod TotColrs) 'border straight 2
  1158.     End If
  1159.     If cStyle(141) = 1 Then
  1160.         pic.Line (i, pic.Width)-(i, pic.Width - pic.Width / 10), QBColor(i Mod TotColrs) 'border straight 4
  1161.     End If
  1162.     If cStyle(142) = 1 Then
  1163.         pic.Line (pic.Width, i)-(pic.Width - pic.Width / 10, i), QBColor(i Mod TotColrs) 'border straight 4
  1164.     End If
  1165.     If cStyle(143) = 1 Then '******** Slant centered style  new
  1166.         pic.Line (0, i)-(pic.Width / 2, i + pic.Width / 10), QBColor(i Mod TotColrs) 'Slant centered 1
  1167.     End If
  1168.     If cStyle(144) = 1 Then
  1169.         pic.Line (pic.Width / 2, i + pic.Width / 10)-(pic.Width, i), QBColor(i Mod TotColrs) 'Slant centered 2
  1170.     End If
  1171.     If cStyle(145) = 1 Then
  1172.         pic.Line (pic.Width / 2, i)-(pic.Width, i + pic.Width / 10), QBColor(i Mod TotColrs)  'Slant centered 3
  1173.     End If
  1174.     If cStyle(146) = 1 Then
  1175.         pic.Line (0, i + pic.Width / 10)-(pic.Width / 2, i), QBColor(i Mod TotColrs) 'Slant centered 4
  1176.     End If
  1177.     If cStyle(147) = 1 Then
  1178.         pic.Line (i, 0)-(i + pic.Width / 10, pic.Width / 2), QBColor(i Mod TotColrs) 'Slant centered 5
  1179.     End If
  1180.     If cStyle(148) = 1 Then
  1181.         pic.Line (i + pic.Width / 10, pic.Width / 2)-(i, pic.Width), QBColor(i Mod TotColrs)  'Slant centered 6
  1182.     End If
  1183.     If cStyle(149) = 1 Then
  1184.         pic.Line (i, pic.Width / 2)-(i + pic.Width / 10, pic.Width), QBColor(i Mod TotColrs)  'Slant centered 7
  1185.     End If
  1186.     If cStyle(150) = 1 Then
  1187.         pic.Line (i + pic.Width / 10, 0)-(i, pic.Width / 2), QBColor(i Mod TotColrs) 'Slant centered 8
  1188.     End If
  1189.     'DoEvents
  1190.      pic.Refresh
  1191.      Update_Progress ((i * 100) / pic.Width), "Processing..."
  1192.     Next i
  1193.     
  1194.     pic.ScaleMode = pScaleMode
  1195.     pic.Picture = pic.Image
  1196. Exit Sub
  1197.  
  1198. HandleErr:
  1199. MsgBox Err.Description, vbCritical
  1200. Exit Sub
  1201. End Sub
  1202.  
  1203. 'preview of styles
  1204. Sub Preview_Grid(pic As PictureBox, ByVal numSteps, curStyle As Integer)
  1205. Dim pScaleMode, i
  1206.  
  1207. On Error Resume Next
  1208.  
  1209.   If numSteps = "" Then Exit Sub
  1210.    If numSteps <= 0 Then Exit Sub
  1211.     pScaleMode = pic.ScaleMode
  1212.     pic.ScaleMode = vbTwips
  1213.     pic.Picture = LoadPicture()
  1214.     
  1215.     For i = 0 To pic.Width Step pic.Width / numSteps
  1216.     
  1217.     Select Case curStyle
  1218.     Case 0
  1219.         pic.Line (0, i)-(i, pic.Height), QBColor(i Mod TotColrs) '3D effect
  1220.     Case 1
  1221.         pic.Line (i, 0)-(pic.Height, i), QBColor(i Mod TotColrs) '3D effect
  1222.     Case 2
  1223.         pic.Line (0, pic.Height - i)-(i, 0), QBColor(i Mod TotColrs) '3D effect
  1224.     Case 3
  1225.         pic.Line (pic.Height, pic.Height - i)-(i, pic.Height), QBColor(i Mod TotColrs)  '3D effect
  1226.     Case 4
  1227.          pic.Line (i, pic.Height)-(0, 0), QBColor(i Mod TotColrs) 'topleft
  1228.     Case 5
  1229.          pic.Line (0, 0)-(pic.Height, i), QBColor(i Mod TotColrs) 'topleft
  1230.     Case 6
  1231.          pic.Line (pic.Height, pic.Height)-(i, 0), QBColor(i Mod TotColrs) 'bottomleft
  1232.     Case 7
  1233.          pic.Line (pic.Height, pic.Height)-(0, i), QBColor(i Mod TotColrs) 'bottomleft
  1234.     Case 8
  1235.          pic.Line (0, i)-(pic.Height, 0), QBColor(i Mod TotColrs) 'topright
  1236.     Case 9
  1237.          pic.Line (i, pic.Height)-(pic.Height, 0), QBColor(i Mod TotColrs) 'topright
  1238.     Case 10
  1239.          pic.Line (i, 0)-(0, pic.Height), QBColor(i Mod TotColrs) 'bottomright
  1240.     Case 11
  1241.          pic.Line (pic.Height, i)-(0, pic.Height), QBColor(i Mod TotColrs) 'bottomright
  1242.     Case 12
  1243.          pic.Line (0, i)-(pic.Height, i), QBColor(i Mod TotColrs) 'horz
  1244.     Case 13
  1245.         pic.Line (i, pic.Height)-(i, 0), QBColor(i Mod TotColrs) 'vert
  1246.     Case 14
  1247.        pic.Line (0, i)-(i, 0), QBColor(i Mod TotColrs) 'mesh1
  1248.     Case 15
  1249.         pic.Line (i, pic.Height)-(pic.Height, i), QBColor(i Mod TotColrs) 'mesh2
  1250.     Case 16
  1251.         pic.Line (pic.Height - i, 0)-(pic.Height, i), QBColor(i Mod TotColrs) 'mesh3
  1252.     Case 17
  1253.         pic.Line (i, pic.Height)-(0, pic.Height - i), QBColor(i Mod TotColrs)  'mesh4
  1254.     Case 18
  1255.         pic.Line (0, i)-(pic.Height - i, pic.Height - i), QBColor(i Mod TotColrs) '3D effect 1
  1256.     Case 19
  1257.         pic.Line (pic.Height - i, pic.Height - i)-(i, 0), QBColor(i Mod TotColrs) '3D effect 2
  1258.     Case 20
  1259.         pic.Line (pic.Height - i, 0)-(i, pic.Height - i), QBColor(i Mod TotColrs) '3D effect 3
  1260.     Case 21
  1261.         pic.Line (i, pic.Height - i)-(pic.Height, i), QBColor(i Mod TotColrs) '3D effect 4
  1262.     Case 22
  1263.         pic.Line (pic.Height - i, i)-(0, pic.Height - i), QBColor(i Mod TotColrs) '3D effect 5
  1264.     Case 23
  1265.         pic.Line (i, pic.Height)-(pic.Height - i, i), QBColor(i Mod TotColrs) '3D effect 6
  1266.     Case 24
  1267.         pic.Line (pic.Height - i, pic.Height - i)-(i, pic.Height), QBColor(i Mod TotColrs) '3D effect 7
  1268.     Case 25
  1269.         pic.Line (pic.Height, i)-(pic.Height - i, pic.Height - i), QBColor(i Mod TotColrs) '3D effect 8
  1270.     Case 26
  1271.         pic.Line (pic.Height - i, pic.Height - i)-(i, pic.Height - i), QBColor(i Mod TotColrs) 'effect1
  1272.     Case 27
  1273.         pic.Line (pic.Height - i, i)-(pic.Height - i, pic.Height - i), QBColor(i Mod TotColrs) 'effect2
  1274.     Case 28
  1275.         pic.Line (pic.Height, 0)-(pic.Height - i, pic.Height - i), QBColor(i Mod TotColrs) 'box effect
  1276.     Case 29
  1277.         pic.Line (pic.Height - i, pic.Height - i)-(0, pic.Height), QBColor(i Mod TotColrs) 'box effect
  1278.     Case 30
  1279.         pic.Line (0, 0)-(i, pic.Height - i), QBColor(i Mod TotColrs) 'box effect
  1280.     Case 31
  1281.         pic.Line (pic.Height - i, i)-(pic.Height, pic.Height), QBColor(i Mod TotColrs) 'box effect
  1282.     Case 32
  1283.         pic.Line (i, pic.Height / 2)-(pic.Height - i, i), QBColor(i Mod TotColrs) '3D
  1284.     Case 33
  1285.          pic.Line (i, i)-(pic.Height / 2, pic.Height - i), QBColor(i Mod TotColrs) '3D
  1286.     Case 34
  1287.         pic.Line (pic.Height, i)-(0, pic.Height - i), QBColor(i Mod TotColrs) 'effect5
  1288.     Case 35
  1289.         pic.Line (pic.Height - i, 0)-(i, pic.Height), QBColor(i Mod TotColrs)  'effect6
  1290.     Case 36
  1291.         pic.Line (i, pic.Height)-(i, i), QBColor(i Mod TotColrs)   'line^1
  1292.     Case 37
  1293.         pic.Line (i, pic.Height)-(i, pic.Height - i), QBColor(i Mod TotColrs)  'line^2
  1294.     Case 38
  1295.         pic.Line (i, 0)-(i, pic.Height - i), QBColor(i Mod TotColrs) 'lineV1
  1296.     Case 39
  1297.         pic.Line (i, 0)-(i, i), QBColor(i Mod TotColrs)   'lineV2
  1298.     Case 40
  1299.         pic.Line (pic.Height, i)-(i, i), QBColor(i Mod TotColrs)  'line<1
  1300.     Case 41
  1301.         pic.Line (pic.Height, i)-(pic.Height - i, i), QBColor(i Mod TotColrs)  'line<2
  1302.     Case 42
  1303.         pic.Line (0, i)-(pic.Height - i, i), QBColor(i Mod TotColrs) 'line>1
  1304.     Case 43
  1305.         pic.Line (0, i)-(i, i), QBColor(i Mod TotColrs) 'line>2
  1306.     Case 44
  1307.         pic.Line (pic.Height - i / 2, i)-(i, pic.Height - i), QBColor(i Mod TotColrs) '3D
  1308.     Case 45
  1309.         pic.Line (i, (pic.Height / 2) - i / 2)-(pic.Height - i, i), QBColor(i Mod TotColrs) '3D
  1310.     Case 46
  1311.         pic.Line (pic.Height - i, i)-(i, pic.Height - i / 2), QBColor(i Mod TotColrs) '3D
  1312.     Case 47
  1313.         pic.Line (i, pic.Height - i)-((pic.Height / 2) - i / 2, i), QBColor(i Mod TotColrs) '3D
  1314.     Case 48
  1315.         pic.Line (pic.Height - i, pic.Height - i / 2)-(i, i), QBColor(i Mod TotColrs) '3D
  1316.     Case 49
  1317.         pic.Line (i, i)-(pic.Height - i / 2, pic.Height - i), QBColor(i Mod TotColrs) '3D
  1318.     Case 50
  1319.     pic.Line ((pic.Height / 2) - i / 2, pic.Height - i)-(i, i), QBColor(i Mod TotColrs) '3D
  1320.     Case 51
  1321.         pic.Line (i, i)-(pic.Height - i, (pic.Height / 2) - i / 2), QBColor(i Mod TotColrs) '3D
  1322.     Case 52
  1323.         pic.Line (pic.Height / 2, i)-(i, pic.Height / 2), QBColor(i Mod TotColrs) 'SlantBox
  1324.     Case 53
  1325.         pic.Line (pic.Height / 2, i)-(pic.Height - i, pic.Height / 2), QBColor(i Mod TotColrs) 'SlantBox
  1326.     Case 54
  1327.         pic.Line (pic.Height - i, i)-(0, pic.Height - i / 2), QBColor(i Mod TotColrs) '3D
  1328.     Case 55
  1329.         pic.Line (pic.Height / 2 - i / 2, pic.Height)-(i, pic.Height - i), QBColor(i Mod TotColrs) '3D
  1330.     Case 56
  1331.         pic.Line (pic.Height - i / 2, 0)-(i, pic.Height - i), QBColor(i Mod TotColrs) '3D
  1332.     Case 57
  1333.         pic.Line (pic.Height, pic.Height / 2 - i / 2)-(pic.Height - i, i), QBColor(i Mod TotColrs)  '3D
  1334.     Case 58
  1335.         pic.Line (pic.Height, pic.Height - i / 2)-(i, i), QBColor(i Mod TotColrs) '3D effect 8
  1336.     Case 59
  1337.         pic.Line (pic.Height - i / 2, pic.Height)-(i, i), QBColor(i Mod TotColrs) '3D effect 8
  1338.     Case 60
  1339.         pic.Line (0, pic.Height / 2 - i / 2)-(i, i), QBColor(i Mod TotColrs) '3D effect 8
  1340.     Case 61
  1341.         pic.Line (pic.Height / 2 - i / 2, 0)-(i, i), QBColor(i Mod TotColrs) '3D effect 8
  1342.     Case 62
  1343.         pic.Line (pic.Height / 2, i)-(0, pic.Height / 2), QBColor(i Mod TotColrs) 'Box
  1344.     Case 63
  1345.         pic.Line (pic.Height / 2, pic.Height - i)-(pic.Height, pic.Height / 2), QBColor(i Mod TotColrs) 'Box
  1346.     Case 64
  1347.         pic.Line (pic.Height / 2, 0)-(i, pic.Height / 2), QBColor(i Mod TotColrs) 'Box
  1348.     Case 65
  1349.         pic.Line (pic.Height / 2, pic.Height)-(i, pic.Height / 2), QBColor(i Mod TotColrs) 'Box
  1350.     Case 66
  1351.         pic.Line (pic.Height - i, 0)-(i, pic.Height / 2), QBColor(i Mod TotColrs) '3D
  1352.     Case 67
  1353.         pic.Line (i, pic.Height / 2)-(pic.Height - i, pic.Height), QBColor(i Mod TotColrs) '3D
  1354.     Case 68
  1355.         pic.Line (0, i)-(pic.Height / 2, pic.Height - i), QBColor(i Mod TotColrs)  '3D
  1356.     Case 69
  1357.         pic.Line (pic.Height, i)-(pic.Height / 2, pic.Height - i), QBColor(i Mod TotColrs) '3D
  1358.     Case 70
  1359.         pic.Line (0, 0)-(i, pic.Height / 2), QBColor(i Mod TotColrs)  'trianglestyle
  1360.     Case 71
  1361.         pic.Line (0, pic.Height)-(i, pic.Height / 2), QBColor(i Mod TotColrs)  'trianglestyle
  1362.     Case 72
  1363.         pic.Line (pic.Height, 0)-(i, pic.Height / 2), QBColor(i Mod TotColrs)  'trianglestyle
  1364.     Case 73
  1365.         pic.Line (pic.Height, pic.Height)-(i, pic.Height / 2), QBColor(i Mod TotColrs)  'trianglestyle
  1366.     Case 74
  1367.         pic.Line (0, pic.Height / 2)-(i, pic.Height), QBColor(i Mod TotColrs)  'trianglestyle
  1368.     Case 75
  1369.         pic.Line (0, pic.Height / 2)-(i, 0), QBColor(i Mod TotColrs)  'trianglestyle
  1370.     Case 76
  1371.         pic.Line (pic.Height, pic.Height / 2)-(i, pic.Height), QBColor(i Mod TotColrs)  'trianglestyle
  1372.     Case 77
  1373.         pic.Line (pic.Height, pic.Height / 2)-(i, 0), QBColor(i Mod TotColrs)  'trianglestyle
  1374.     Case 78
  1375.         pic.Line (pic.Height / 2, i)-(pic.Height - i / 2, pic.Height), QBColor(i Mod TotColrs) 'Isocelesstyle
  1376.     Case 79
  1377.         pic.Line (pic.Height / 2, pic.Height - i)-(pic.Height / 2 - i / 2, pic.Height), QBColor(i Mod TotColrs) 'Isocelesstyle
  1378.     Case 80
  1379.         pic.Line (pic.Height / 2, pic.Height - i)-(pic.Height - i / 2, 0), QBColor(i Mod TotColrs) 'Isocelesstyle
  1380.     Case 81
  1381.         pic.Line (pic.Height / 2, i)-(pic.Height / 2 - i / 2, 0), QBColor(i Mod TotColrs)  'Isocelesstyle
  1382.     Case 82
  1383.         pic.Line (i, pic.Height / 2)-(0, pic.Height / 2 - i / 2), QBColor(i Mod TotColrs) 'Isocelesstyle
  1384.     Case 83
  1385.         pic.Line (i, pic.Height / 2)-(0, pic.Height / 2 + i / 2), QBColor(i Mod TotColrs) 'Isocelesstyle
  1386.     Case 84
  1387.         pic.Line (pic.Height - i, pic.Height / 2)-(pic.Height, pic.Height / 2 - i / 2), QBColor(i Mod TotColrs) 'Isocelesstyle
  1388.     Case 85
  1389.         pic.Line (i, pic.Height / 2)-(pic.Height, pic.Height - i / 2), QBColor(i Mod TotColrs) 'Isocelesstyle
  1390.     Case 86
  1391.         pic.Line (0, pic.Height / 2)-(pic.Height, i), QBColor(i Mod TotColrs) 'comet
  1392.     Case 87
  1393.         pic.Line (0, i)-(pic.Height, pic.Height / 2), QBColor(i Mod TotColrs) 'comet
  1394.     Case 88
  1395.         pic.Line (i, pic.Height)-(pic.Height / 2, 0), QBColor(i Mod TotColrs) 'comet
  1396.     Case 89
  1397.         pic.Line (i, 0)-(pic.Height / 2, pic.Height), QBColor(i Mod TotColrs) 'comet
  1398.     Case 90
  1399.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2 - i), i, QBColor(i Mod TotColrs) 'circles
  1400.     Case 91
  1401.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2 - i), i, QBColor(i Mod TotColrs) 'circles
  1402.     Case 92
  1403.         pic.Circle (pic.ScaleHeight / 2 - i, pic.ScaleWidth / 2 - i / 2), i, QBColor(i Mod TotColrs) 'circles
  1404.     Case 93
  1405.         pic.Circle (pic.ScaleHeight / 2 - i, pic.ScaleWidth / 2 + i / 2), i, QBColor(i Mod TotColrs) 'circles
  1406.     Case 94
  1407.         pic.Circle (pic.ScaleHeight / 2 + i, pic.ScaleWidth / 2 + i / 2), i, QBColor(i Mod TotColrs) 'circles
  1408.     Case 95
  1409.         pic.Circle (pic.ScaleHeight / 2 + i, pic.ScaleWidth / 2 - i / 2), i, QBColor(i Mod TotColrs) 'circles
  1410.     Case 96
  1411.         pic.Circle (pic.ScaleHeight / 2 + i / 2, pic.ScaleWidth / 2 + i), i, QBColor(i Mod TotColrs) 'circles
  1412.     Case 97
  1413.         pic.Circle (pic.ScaleHeight / 2 - i / 2, pic.ScaleWidth / 2 + i), i, QBColor(i Mod TotColrs) 'circles
  1414.     Case 98
  1415.         pic.Circle (pic.ScaleWidth / (i + 1), pic.ScaleHeight / (i + 1)), i, QBColor(i Mod TotColrs) 'Corner circles
  1416.     Case 99
  1417.         pic.Circle (pic.ScaleWidth, 0), i, QBColor(i Mod TotColrs) 'Corner circles
  1418.     Case 100
  1419.         pic.Circle (0, pic.ScaleHeight), i, QBColor(i Mod TotColrs) 'Corner circles
  1420.     Case 101
  1421.         pic.Circle (pic.ScaleWidth, pic.ScaleWidth), i, QBColor(i Mod TotColrs) 'Corner circles
  1422.     Case 102
  1423.         pic.Circle (pic.ScaleWidth / 2 - (i + 1), pic.ScaleHeight / 2 - (i + 1)), i, QBColor(i Mod TotColrs) 'circles w/Box style
  1424.     Case 103
  1425.         pic.Circle (pic.ScaleWidth / 2 + (i + 1), pic.ScaleHeight / 2 - (i + 1)), i, QBColor(i Mod TotColrs) 'circles w/Box style
  1426.     Case 104
  1427.         pic.Circle (pic.ScaleHeight / 2 - i, pic.ScaleWidth / 2 + i), i, QBColor(i Mod TotColrs) 'circles w/Box style
  1428.     Case 105
  1429.         pic.Circle (pic.ScaleHeight / 2 + i, pic.ScaleWidth / 2 + i), i, QBColor(i Mod TotColrs) 'circles w/Box style
  1430.     Case 106
  1431.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2 - i / 2), i, QBColor(i Mod TotColrs) 'circles lunar style
  1432.     Case 107
  1433.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2 + i / 2), i, QBColor(i Mod TotColrs) 'circles lunar style
  1434.     Case 108
  1435.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2 - i / 2), i, QBColor(i Mod TotColrs) 'circles lunar style
  1436.     Case 109
  1437.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2 + i / 2), i, QBColor(i Mod TotColrs) 'circles lunar style
  1438.     Case 110
  1439.         pic.Circle (pic.ScaleWidth / 2, pic.ScaleHeight), i, QBColor(i Mod TotColrs) 'circles center Border style
  1440.     Case 111
  1441.         pic.Circle (pic.ScaleHeight, pic.ScaleWidth / 2), i, QBColor(i Mod TotColrs) 'circles center Border style
  1442.     Case 112
  1443.         pic.Circle (pic.ScaleWidth / 2, 0), i, QBColor(i Mod TotColrs) 'circles center Border style
  1444.     Case 113
  1445.         pic.Circle (0, pic.ScaleWidth / 2), i, QBColor(i Mod TotColrs) 'circles center Border style
  1446.     Case 114
  1447.         pic.Circle (pic.ScaleWidth / 2 + i / 2, pic.ScaleHeight / 2), i, QBColor(i Mod TotColrs) 'circles offset center
  1448.     Case 115
  1449.         pic.Circle (pic.ScaleWidth / 2 - i / 2, pic.ScaleHeight / 2), i, QBColor(i Mod TotColrs) 'circles offset center
  1450.     Case 116
  1451.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleWidth / 2 - i / 2), i, QBColor(i Mod TotColrs) 'circles offset center
  1452.     Case 117
  1453.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleWidth / 2 + i / 2), i, QBColor(i Mod TotColrs) 'circles offset center
  1454.     Case 118
  1455.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleWidth / 2), i, QBColor(i Mod TotColrs) 'circle center
  1456.     Case 119
  1457.         pic.Circle (pic.ScaleHeight, i), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1458.     Case 120
  1459.         pic.Circle (pic.ScaleHeight - i, 0), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1460.     Case 121
  1461.         pic.Circle (0, pic.ScaleHeight - i), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1462.     Case 122
  1463.         pic.Circle (i, pic.ScaleHeight), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1464.     Case 123
  1465.         pic.Circle (i, 0), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1466.     Case 124
  1467.         pic.Circle (0, i), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1468.     Case 125
  1469.         pic.Circle (pic.ScaleHeight, pic.ScaleHeight - i), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1470.     Case 126
  1471.         pic.Circle (pic.ScaleHeight - i, pic.ScaleHeight), i, QBColor(i Mod TotColrs) 'circles corner to corner
  1472.     Case 127
  1473.         pic.Circle (i, pic.ScaleHeight / 2), i, QBColor(i Mod TotColrs) 'Circles Sides
  1474.     Case 128
  1475.         pic.Circle (pic.ScaleHeight / 2, i), i, QBColor(i Mod TotColrs) 'Circles Sides
  1476.     Case 129
  1477.         pic.Circle (pic.ScaleHeight - i, pic.ScaleHeight / 2), i, QBColor(i Mod TotColrs) 'Circles Sides
  1478.     Case 130
  1479.         pic.Circle (pic.ScaleHeight / 2, pic.ScaleHeight - i), i, QBColor(i Mod TotColrs) 'Circles Sides
  1480.     Case 131 '*******************new ones
  1481.         pic.Line (pic.Width / 10, i + pic.Width / 10)-(0, i), QBColor(i Mod TotColrs) 'border style 1a
  1482.     Case 132
  1483.         pic.Line (0, i + pic.Width / 10)-(pic.Width / 10, i), QBColor(i Mod TotColrs) 'border style 1b
  1484.     Case 133
  1485.         pic.Line (i, pic.Width)-(i + pic.Width / 10, pic.Width - pic.Width / 10), QBColor(i Mod TotColrs)  'border side 2a
  1486.     Case 134
  1487.         pic.Line (i + pic.Width / 10, pic.Width)-(i, pic.Width - pic.Width / 10), QBColor(i Mod TotColrs)  'border side 2b
  1488.     Case 135
  1489.         pic.Line (pic.Width, i + pic.Width / 10)-(pic.Width - pic.Width / 10, i), QBColor(i Mod TotColrs) 'border side 3a
  1490.     Case 136
  1491.         pic.Line (pic.Width - pic.Width / 10, i + pic.Width / 10)-(pic.Width, i), QBColor(i Mod TotColrs) 'border side 3b
  1492.     Case 137
  1493.         pic.Line (i, pic.Width / 10)-(i + pic.Width / 10, 0), QBColor(i Mod TotColrs) 'border side 4a
  1494.     Case 138
  1495.         pic.Line (i + pic.Width / 10, pic.Width / 10)-(i, 0), QBColor(i Mod TotColrs) 'border side 4b
  1496.     Case 139 '*********border straight style  new
  1497.         pic.Line (i, 0)-(i, pic.Width / 10), QBColor(i Mod TotColrs) 'border straight 1
  1498.     Case 140
  1499.         pic.Line (0, i)-(pic.Width / 10, i), QBColor(i Mod TotColrs) 'border straight 2
  1500.     Case 141
  1501.         pic.Line (i, pic.Width)-(i, pic.Width - pic.Width / 10), QBColor(i Mod TotColrs) 'border straight 4
  1502.     Case 142
  1503.         pic.Line (pic.Width, i)-(pic.Width - pic.Width / 10, i), QBColor(i Mod TotColrs) 'border straight 4
  1504.     Case 143 '******** Slant centered style  new
  1505.         pic.Line (0, i)-(pic.Width / 2, i + pic.Width / 10), QBColor(i Mod TotColrs) 'Slant centered 1
  1506.     Case 144
  1507.         pic.Line (pic.Width / 2, i + pic.Width / 10)-(pic.Width, i), QBColor(i Mod TotColrs) 'Slant centered 2
  1508.     Case 145
  1509.         pic.Line (pic.Width / 2, i)-(pic.Width, i + pic.Width / 10), QBColor(i Mod TotColrs)  'Slant centered 3
  1510.     Case 146
  1511.         pic.Line (0, i + pic.Width / 10)-(pic.Width / 2, i), QBColor(i Mod TotColrs) 'Slant centered 4
  1512.     Case 147
  1513.         pic.Line (i, 0)-(i + pic.Width / 10, pic.Width / 2), QBColor(i Mod TotColrs) 'Slant centered 5
  1514.     Case 148
  1515.         pic.Line (i + pic.Width / 10, pic.Width / 2)-(i, pic.Width), QBColor(i Mod TotColrs)  'Slant centered 6
  1516.     Case 149
  1517.         pic.Line (i, pic.Width / 2)-(i + pic.Width / 10, pic.Width), QBColor(i Mod TotColrs)  'Slant centered 7
  1518.     Case 150
  1519.         pic.Line (i + pic.Width / 10, 0)-(i, pic.Width / 2), QBColor(i Mod TotColrs) 'Slant centered 8
  1520.     End Select
  1521.       
  1522.       
  1523.       
  1524.       DoEvents
  1525.      pic.Refresh
  1526.     Next i
  1527.     pic.Picture = pic.Image
  1528. Exit Sub
  1529. End Sub
  1530.  
  1531. 'draws the selected item
  1532. Public Sub DrawItem(pic As PictureBox, curItem As String, ByVal cClr As Long, _
  1533. ByVal StartX As Single, ByVal StartY As Single, ByVal EndX As Single, ByVal EndY As Single)
  1534. On Error Resume Next
  1535.  
  1536. Select Case curItem
  1537.     Case "line"
  1538.     pic.Line (StartX, StartY)-(EndX, EndY), cClr
  1539.     Case "box"
  1540.     Call Rectangle(pic.hDC, StartX, StartY, EndX, EndY)
  1541.     Case "circle"
  1542.     Call Ellipse(pic.hDC, StartX, StartY, EndX, EndY)
  1543.     Case "chord"
  1544.     Call Chord(pic.hDC, StartX, StartY, EndX, EndY, StartX + 5, StartY + 5, EndX + 5, EndY + 5)
  1545.     Case "arc"
  1546.     Call Arc(pic.hDC, StartX, StartY, EndX, EndY, StartX + 5, StartY + 5, EndX + 5, EndY + 5)
  1547. End Select
  1548. Exit Sub
  1549. End Sub
  1550.  
  1551. 'draws a text on the picture box
  1552. Public Sub DrawText(DestDC As Long, ByVal tX As Long, ByVal tY As Long, ByVal oText As String)
  1553. On Error Resume Next
  1554. Call TextOut(DestDC, tX, tY - 6, oText, Len(oText))
  1555. Exit Sub
  1556. End Sub
  1557.  
  1558. 'prints the tile or back
  1559. Public Sub Print_Tile(picDest As PictureBox, ByVal printMode As Integer, ByVal NumCopies As Integer)
  1560. Dim CCopies As Integer
  1561.  
  1562. 'On Error GoTo HandlePrintERR
  1563. frmPrint.lblmsg.Caption = "Please Wait..."
  1564.  
  1565. Printer.Scale (-1, -1.5)-(7.5, 12)
  1566.  
  1567. For CCopies = 1 To NumCopies
  1568. frmPrint.lblmsg.Caption = "Sending " & NumCopies & " page[s] to printer..."
  1569. If printMode = 0 Then
  1570.   Printer.PaintPicture picDest.Picture, -0.5, -0.5, 7.25, 12, -0.5, -0.5, 7.25, 12, vbSrcCopy 'normal
  1571. Else
  1572. Printer.PaintPicture picDest.Picture, -0.5, -0.5 'stretched
  1573. End If
  1574.     If NumCopies > 1 Then
  1575.         If CCopies <= (NumCopies - 1) Then
  1576.           Printer.NewPage
  1577.         End If
  1578.     End If
  1579. Next
  1580. frmPrint.lblmsg.Caption = "Done."
  1581. Printer.EndDoc 'start print
  1582. Exit Sub
  1583.  
  1584. HandlePrintERR:
  1585. MsgBox Err.Description, vbCritical
  1586. frmMain.stbar.Text = "Error in printing!"
  1587. Printer.EndDoc
  1588. Exit Sub
  1589. End Sub
  1590.  
  1591.  
  1592. 'This is a simple procedure I made. It offdsets a picture
  1593. 'from one picturebox to another given the styles:
  1594. ' 0 for Horizontal offset
  1595. ' 1 for Vertical offset
  1596. ' 2 for both
  1597. Sub Offset_Image(mainpic As PictureBox, destpic As PictureBox, ByVal OffsetStyle As Integer)
  1598. Dim Wid, Hgt As Single
  1599. Dim sMode1
  1600. Dim sMode2
  1601.  
  1602. On Error GoTo Offhandler
  1603.  
  1604. sMode1 = mainpic.ScaleMode
  1605. sMode2 = destpic.ScaleMode
  1606.  
  1607. Wid = mainpic.ScaleWidth
  1608. Hgt = mainpic.ScaleHeight
  1609.  
  1610. mainpic.ScaleMode = vbPixels
  1611. destpic.ScaleMode = vbPixels
  1612.  
  1613. destpic.Picture = LoadPicture()
  1614.  
  1615. Select Case OffsetStyle
  1616. Case 0 'horizontal
  1617. destpic.PaintPicture mainpic, 0, Wid / 2, Wid, Hgt / 2, 0, 0, Wid, Hgt / 2, vbSrcCopy   'horz half 1
  1618. destpic.PaintPicture mainpic, 0, 0, Wid, Hgt / 2, 0, Wid / 2, Wid, Hgt / 2, vbSrcCopy   'horz half 2
  1619. Case 1 'vertical
  1620. destpic.PaintPicture mainpic, Wid / 2, 0, Wid / 2, Hgt, 0, 0, Wid / 2, Hgt, vbSrcCopy   'vert half 1
  1621. destpic.PaintPicture mainpic, 0, 0, Wid / 2, Hgt, Wid / 2, 0, Wid / 2, Hgt, vbSrcCopy    'vert half 2
  1622. Case 2 'both
  1623. destpic.PaintPicture mainpic, Wid / 2, Hgt / 2, Wid / 2, Hgt / 2, 0, 0, Wid / 2, Hgt / 2, vbSrcCopy   'half 1
  1624. destpic.PaintPicture mainpic, 0, 0, Wid / 2, Hgt / 2, Wid / 2, Hgt / 2, Wid / 2, Hgt / 2, vbSrcCopy   'half 2
  1625. destpic.PaintPicture mainpic, Wid / 2, 0, Wid, Hgt, 0, Hgt / 2, Wid, Hgt, vbSrcCopy    'half 3
  1626. destpic.PaintPicture mainpic, 0, Hgt / 2, Wid, Hgt, Wid / 2, 0, Wid, Hgt, vbSrcCopy    'half 4
  1627. End Select
  1628.  
  1629. mainpic.Refresh
  1630. destpic.Refresh
  1631. destpic.Picture = destpic.Image
  1632. mainpic.ScaleMode = sMode1
  1633. destpic.ScaleMode = sMode2
  1634. Exit Sub
  1635.  
  1636. Offhandler:
  1637. MsgBox Err.Description, vbCritical
  1638. Exit Sub
  1639. End Sub
  1640.  
  1641. 'this procedure fills an area of a picture box with a given
  1642. 'color
  1643. Public Sub Fill_Area(Pic_Work As PictureBox, X As Single, Y As Single, ByVal withColr As Long)
  1644. Dim fR
  1645.     On Error Resume Next
  1646.     
  1647.     Screen.MousePointer = vbHourglass
  1648.     Pic_Work.FillStyle = vbSolid
  1649.     Pic_Work.FillColor = withColr
  1650.     fR = ExtFloodFill(Pic_Work.hDC, X, Y, Pic_Work.Point(X, Y), FLOODFILLSURFACE)
  1651.     Pic_Work.Refresh
  1652.     Pic_Work.Picture = Pic_Work.Image
  1653.     Screen.MousePointer = vbDefault
  1654.     
  1655.     Exit Sub
  1656. End Sub
  1657.  
  1658.  
  1659. Sub Draw_Preview(picParent As PictureBox, picPrev As PictureBox)
  1660. Dim old_ScaleMode, Wid, Hgt
  1661. On Error Resume Next
  1662. If picParent.Picture = 0 Then Exit Sub
  1663. Wid = picPrev.ScaleWidth
  1664. Hgt = picPrev.ScaleHeight
  1665. old_ScaleMode = picParent.ScaleMode
  1666. picParent.ScaleMode = 3
  1667. picPrev.Picture = LoadPicture()
  1668. picPrev.PaintPicture picParent.Picture, _
  1669.         0, 0, Wid, Hgt
  1670. picParent.ScaleMode = old_ScaleMode
  1671. picPrev.Refresh
  1672. picPrev.Picture = picPrev.Image
  1673. Exit Sub
  1674. End Sub
  1675.  
  1676.  
  1677. Sub MakeIt3D(Ctrl As Control, nBevel%, nSpace%, bInset%)
  1678. 'Makes the control appear on a 3D platform 3D.
  1679. ''Parameters:
  1680. ' Ctrl = apply 3D look to control name
  1681. ' nBevel% = bevel width (pixels)
  1682. ' nSpace% = surround distance from control (pixels)
  1683. ' bInset% = True is 3D inset border' False is 3D outset border
  1684.  
  1685. PixX% = Screen.TwipsPerPixelX
  1686. PixY% = Screen.TwipsPerPixelY
  1687. CTop% = Ctrl.Top - PixX%
  1688. CLft% = Ctrl.Left - PixY%
  1689. CRgt% = Ctrl.Left + Ctrl.Width
  1690. CBtm% = Ctrl.Top + Ctrl.Height
  1691. If bInset% Then 'recessed border
  1692. For i% = nSpace% To (nBevel% + nSpace% - 1)
  1693. AddX% = i% * PixX%
  1694. AddY% = i% * PixY%
  1695. Ctrl.Parent.Line (CLft% - AddX%, CTop% - AddY%)-(CRgt% + AddX%, CTop% - AddY%), &HFFFFFF
  1696. Ctrl.Parent.Line (CLft% - AddX%, CTop% - AddY%)-(CLft% - AddX%, CBtm% + AddY%), &HFFFFFF
  1697. Ctrl.Parent.Line (CLft% - AddX%, CBtm% + AddY%)-(CRgt% + AddX% + PixX%, CBtm% + AddY%), &H808080
  1698. Ctrl.Parent.Line (CRgt% + AddX%, CTop% - AddY%)-(CRgt% + AddX%, CBtm% + AddY%), &H808080
  1699. Next
  1700. Else 'raised border
  1701. For i% = nSpace% To (nBevel% + nSpace% - 5)
  1702. AddX% = i% * PixX%
  1703. AddY% = i% * PixY%
  1704. Ctrl.Parent.Line (CRgt% + AddX%, CBtm% + AddY%)-(CRgt% + AddX%, CTop% - AddY%), &HFFFFFF
  1705. Ctrl.Parent.Line (CRgt% + AddX%, CBtm% + AddY%)-(CLft% - AddX%, CBtm% + AddY%), &HFFFFFF
  1706. Ctrl.Parent.Line (CRgt% + AddX%, CTop% - AddY%)-(CLft% - AddX% - PixX%, CTop% - AddY%), &H808080
  1707. Ctrl.Parent.Line (CLft% - AddX%, CBtm% + AddY%)-(CLft% - AddX%, CTop% - AddY%), &H808080
  1708. Next
  1709. End If
  1710. End Sub
  1711.  
  1712. '
  1713. 'Special filters Thanks to the  Authors of
  1714. 'Visual Basic Black Book. It is a great book
  1715. 'it taught me how to use graphics effects
  1716.  
  1717. 'To apply a colour Lens effect to an image
  1718. Public Sub ColorLens_Image(picSource As PictureBox, picDest As PictureBox, _
  1719. ByVal RVal, GVal, BVal As Long)
  1720. Dim Wid As Single, Hgt As Single
  1721. Dim X, Y As Single
  1722. Dim start
  1723. Dim r, g, b As Long
  1724.  
  1725. Wid = picSource.ScaleWidth
  1726. Hgt = picSource.ScaleHeight
  1727.  
  1728. picDest.Width = picSource.Width
  1729. picDest.Height = picSource.Height
  1730.  
  1731. For X = 0 To Wid
  1732.     For Y = 0 To Hgt
  1733.          r = (picSource.Point(X, Y) And RVal)
  1734.          g = picSource.Point(X, Y) And GVal
  1735.          b = picSource.Point(X, Y) And BVal
  1736.         picDest.PSet (X, Y), RGB(r, g, b)
  1737.     Next
  1738.     Update_Progress ((X * 100) / Wid), "Processing..."
  1739. Next
  1740. picDest.Refresh
  1741. End Sub
  1742.  
  1743. 'this procedure mosaics an image with a given pixel size
  1744. Public Sub Mosaic_Image(picSource As PictureBox, picDest As PictureBox, ByVal mRange As Variant)
  1745.     Dim Wid As Single, Hgt As Single
  1746.     Dim X, Y As Single
  1747.     Dim bytRed, bytGreen, bytBlue As Byte
  1748.     Dim pCenter As Single
  1749.     Dim rRangeI, rRangeJ As Integer
  1750.     Dim pC, pR As Single
  1751.     Dim cLimit, rLimit
  1752.     Dim i, j As Single
  1753.     
  1754.     Wid = picSource.ScaleWidth
  1755.     Hgt = picSource.ScaleHeight
  1756.     
  1757.     picDest.Width = picSource.Width
  1758.     picDest.Height = picSource.Height
  1759.  
  1760. For X = 0 To Wid Step (mRange + 1)
  1761.     For Y = 0 To Hgt Step (mRange + 1)
  1762.  
  1763.         'Work out the distance between the square division grid, and the pixel to get data from.
  1764.             pCenter = (mRange) \ 2
  1765.             
  1766.         'Pixel size to copy over
  1767.             rRangeI = (mRange)
  1768.             rRangeJ = (mRange)
  1769.             
  1770.             'Check if it's running out of range
  1771.             If X + mRange > Wid Then rRangeI = Wid - X
  1772.             If Y + mRange > Hgt Then rRangeJ = Hgt - Y
  1773.             
  1774.             'Work out where to get the data from
  1775.             pC = X + pCenter
  1776.             pR = Y + pCenter
  1777.             
  1778.             If pC > Wid Then pC = X
  1779.             If pR > Hgt Then pR = Y
  1780.             
  1781.             'get the colors from point
  1782.             bytRed = ((picSource.Point(X, Y) And &HFF) + (picSource.Point(X, Y) And &HFF)) / 2
  1783.             bytGreen = (((picSource.Point(X, Y) And &HFF00) / &H100) Mod &H100 + ((picSource.Point(X, Y) And &HFF00) / &H100) Mod &H100) / 2
  1784.             bytBlue = (((picSource.Point(X, Y) And &HFF0000) / &H10000) Mod &H100 + ((picSource.Point(X, Y) And &HFF0000) / &H10000) Mod &H100) / 2
  1785.             
  1786.             If bytRed < 0 Then bytRed = 0
  1787.             If bytGreen < 0 Then bytGreen = 0
  1788.             If bytBlue < 0 Then bytBlue = 0
  1789.             
  1790.             
  1791.             If X = 0 Then cLimit = -pCenter
  1792.             If Y = 0 Then rLimit = -pCenter
  1793.             
  1794.             'Copy the palette entry number over the region's pixels
  1795.             For i = cLimit To (rRangeI)
  1796.                 For j = rLimit To (rRangeJ)
  1797.                     picDest.PSet (X + i, Y + j), RGB(bytRed, bytGreen, bytBlue)
  1798.                 Next j
  1799.             Next i
  1800.     Next Y
  1801. '    Update_Progress ((X * 100) / Wid),"Processing..."
  1802. Next X
  1803. picDest.Refresh
  1804. End Sub
  1805.  
  1806. 'provide a progress bar
  1807. Sub Update_Progress(ByVal cProgI As Single, ByVal StatusText As String)
  1808. frmMain.ProgBar.Line (0, 0)-(cProgI, 10), vbBlue, BF
  1809. frmMain.ProgBar.CurrentX = 2
  1810. frmMain.ProgBar.CurrentY = 0
  1811. frmMain.ProgBar.ForeColor = vbWhite
  1812. frmMain.ProgBar.Print StatusText
  1813. End Sub
  1814.  
  1815.  
  1816. 'Using Array and is three times faster
  1817. 'This is a more flexible procedure. It would probably
  1818. 'Emboss or Engrave and  applies Motion Blur effect
  1819. 'requires a source picturebox and the destination
  1820. 'picture box along with the filter type
  1821. 'This procedure is quite user friendly
  1822. Public Sub Process_Image(picSource As PictureBox, picDest As PictureBox, ByVal sFilter As SpecialFilters)
  1823.     Dim Wid As Single, Hgt As Single
  1824.     Dim MinX, MinY, maxX, maxY As Single
  1825.     Dim OffsetX, OffsetY As Integer
  1826.     Dim SkipX1, SkipY1, SkipX2, SkipY2 As Integer
  1827.     Dim Flow As Integer
  1828.     Dim X, Y As Integer
  1829.     Dim bytRed, bytGreen, bytBlue, bytAverage As Integer
  1830.     Dim pixels() As Long
  1831.     
  1832.   
  1833.     'set the initial values
  1834.     Wid = picSource.ScaleWidth 'maxX
  1835.     Hgt = picSource.ScaleHeight 'maxY
  1836.     picDest.Width = picSource.Width
  1837.     picDest.Height = picSource.Height
  1838.     picDest.Picture = LoadPicture()
  1839.     
  1840.     'get filter
  1841.     Select Case sFilter
  1842.     Case fEmboss 'emboss
  1843.         MinX = Wid
  1844.         MinY = Hgt
  1845.         maxX = 0
  1846.         maxY = 0
  1847.         OffsetX = -1
  1848.         OffsetY = -1
  1849.         Flow = -1
  1850.         SkipX1 = 0
  1851.         SkipY1 = 0
  1852.         SkipX2 = 0
  1853.         SkipY2 = 0
  1854.     Case fEngrave 'engrave
  1855.         MinX = -1
  1856.         MinY = -1
  1857.         maxX = Wid
  1858.         maxY = Hgt
  1859.         OffsetX = 1
  1860.         OffsetY = 1
  1861.         Flow = 1
  1862.         SkipX1 = 0
  1863.         SkipY1 = 0
  1864.         SkipX2 = -1
  1865.         SkipY2 = -1
  1866.     Case fMotionBlur
  1867.         MinX = Wid
  1868.         MinY = Hgt
  1869.         maxX = -1
  1870.         maxY = -1
  1871.         OffsetX = 1
  1872.         OffsetY = 1
  1873.         Flow = -1
  1874.         SkipX1 = -2
  1875.         SkipY1 = -2
  1876.         SkipX2 = 0
  1877.         SkipY2 = 0
  1878.     End Select
  1879.     
  1880.     'Redimension array
  1881.     ReDim pixels(-1 To Wid, -1 To Hgt) As Long
  1882.     
  1883.     'Read pixels
  1884.     For X = -1 To Wid
  1885.         For Y = -1 To Hgt
  1886.             pixels(X, Y) = picSource.Point(X, Y)
  1887.         Next Y
  1888.         Update_Progress ((X * 100) / Wid), "Extracting Pixels..."
  1889.     Next X
  1890.     frmMain.ProgBar.Cls
  1891.      
  1892.     'determine colors
  1893.     For X = MinX + SkipX1 To maxX + SkipX2 Step Flow
  1894.         For Y = MinY + SkipY1 To maxY + SkipY2 Step Flow
  1895.             
  1896.             If sFilter = fMotionBlur Then
  1897.             bytRed = ((pixels(X + OffsetX, Y + OffsetY) And &HFF) + (pixels(X, Y) And &HFF)) / 2
  1898.             bytGreen = (((pixels(X + OffsetX, Y + OffsetY) And &HFF00) / &H100) Mod &H100 + ((pixels(X, Y) And &HFF00) / &H100) Mod &H100) / 2
  1899.             bytBlue = (((pixels(X + OffsetX, Y + OffsetY) And &HFF0000) / &H10000) Mod &H100 + ((pixels(X, Y) And &HFF0000) / &H10000) Mod &H100) / 2
  1900.             Else
  1901.             bytRed = ((pixels(X + OffsetX, Y + OffsetY) And &HFF) - (pixels(X, Y) And &HFF)) + 128
  1902.             bytGreen = (((pixels(X + OffsetX, Y + OffsetY) And &HFF00) / &H100) Mod &H100 - ((pixels(X, Y) And &HFF00) / &H100) Mod &H100) + 128
  1903.             bytBlue = (((pixels(X + OffsetX, Y + OffsetY) And &HFF0000) / &H1000) Mod &H100 - ((pixels(X, Y) And &HFF0000) / &H10000) Mod &H100) + 128
  1904.             End If
  1905.             
  1906.             If bytRed < 0 Then bytRed = 0
  1907.             If bytGreen < 0 Then bytGreen = 0
  1908.             If bytBlue < 0 Then bytBlue = 0
  1909.             
  1910.             If bytRed > 255 Then bytRed = 255
  1911.             If bytGreen > 255 Then bytGreen = 255
  1912.             If bytBlue > 255 Then bytBlue = 255
  1913.             
  1914.             bytAverage = (bytRed + bytGreen + bytBlue) / 3
  1915.             If sFilter = fMotionBlur Then
  1916.             pixels(X, Y) = RGB(bytRed, bytGreen, bytBlue)
  1917.             Else
  1918.             pixels(X, Y) = RGB(bytAverage, bytAverage, bytAverage)
  1919.             End If
  1920.          Next Y
  1921.          If MinX <= 0 Then
  1922.          Update_Progress ((X * 100) / Wid), "Processing Colors..."
  1923.          Else
  1924.          Update_Progress (((MinX - X) * 100) / Wid), "Processing Colors..."
  1925.          End If
  1926.     Next X
  1927.     frmMain.ProgBar.Cls
  1928.      
  1929.     'replace pixels
  1930.     For X = -1 To Wid
  1931.         For Y = -1 To Hgt
  1932.             picDest.PSet (X, Y), pixels(X, Y)
  1933.         Next Y
  1934.          Update_Progress ((X * 100) / Wid), "Creating Image..."
  1935.     Next X
  1936.     picDest.Refresh
  1937. End Sub
  1938.  
  1939. 'provides a disabled effect to an image
  1940. Public Sub Disabled_Effect(picSource As PictureBox, picDest As PictureBox)
  1941.     Dim X, Y As Integer
  1942.     Dim bytRed, bytGreen, bytBlue, bytAverage As Integer
  1943.     Dim Wid, Hgt As Single
  1944.     Dim pixels() As Long
  1945.     
  1946.         
  1947.     'set the initial values
  1948.     Wid = picSource.ScaleWidth 'maxX
  1949.     Hgt = picSource.ScaleHeight 'maxY
  1950.     picDest.Width = picSource.Width
  1951.     picDest.Height = picSource.Height
  1952.     picDest.Picture = LoadPicture()
  1953.     
  1954.     'Redimension array
  1955.     ReDim pixels(-1 To Wid, -1 To Hgt) As Long
  1956.     
  1957.     'Read pixels
  1958.     For X = -1 To Wid
  1959.         For Y = -1 To Hgt
  1960.             pixels(X, Y) = picSource.Point(X, Y)
  1961.         Next Y
  1962.          Update_Progress ((X * 100) / Wid), "Extracting Pixels..."
  1963.     Next X
  1964.     frmMain.ProgBar.Cls
  1965.         
  1966.     For X = -1 To Wid - 1
  1967.         For Y = -1 To Hgt - 1
  1968.             bytRed = ((pixels(X + 1, Y + 1) And &HFF) - (pixels(X, Y) And &HFF)) + 195
  1969.             bytGreen = (((pixels(X + 1, Y + 1) And &HFF00) / &H100) Mod &H100 - ((pixels(X, Y) And &HFF00) / &H100) Mod &H100) + 195
  1970.             bytBlue = (((pixels(X + 1, Y + 1) And &HFF0000) / &H10000) Mod &H100 - ((pixels(X, Y) And &HFF0000) / &H10000) Mod &H100) + 195
  1971.             
  1972.             If bytRed < 0 Then bytRed = 128
  1973.             If bytGreen < 0 Then bytGreen = 128
  1974.             If bytBlue < 0 Then bytBlue = 128
  1975.             bytAverage = (bytRed + bytGreen + bytBlue) / 3
  1976.             
  1977.            pixels(X, Y) = RGB(bytAverage, bytAverage, bytAverage)
  1978.          Next Y
  1979.          Update_Progress ((X * 100) / Wid), "Processing Colors..." 'a progress bar
  1980.     Next X
  1981.  
  1982.     frmMain.ProgBar.Cls
  1983.     
  1984.     'Replacing...
  1985.     For X = -1 To Wid
  1986.         For Y = -1 To Hgt
  1987.             picDest.PSet (X, Y), pixels(X, Y)
  1988.         Next Y
  1989.          Update_Progress ((X * 100) / Wid), "Creating Image..."
  1990.     Next X
  1991.     picDest.Refresh
  1992.     picDest.Picture = picDest.Image
  1993. End Sub
  1994.  
  1995. 'applies a cloth effect to an image
  1996. Public Sub Cloth_Effect(picSource As PictureBox, picDest As PictureBox, _
  1997. Optional stX As Integer = 1, Optional stY As Integer = 1, _
  1998. Optional RVal As Integer = 0, Optional GVal As Integer = 0, Optional BVal As Integer = 0, _
  1999. Optional XRaise As Integer = 1, Optional YRaise As Integer = 1, _
  2000. Optional InColor As Boolean = True)
  2001.  
  2002.     Dim Wid As Single, Hgt As Single
  2003.     Dim X, Y As Integer
  2004.     Dim bytRed, bytGreen, bytBlue, bytAverage As Integer
  2005.     Dim pixels() As Long
  2006.     
  2007.         
  2008.     'set the initial values
  2009.     Wid = picSource.ScaleWidth 'maxX
  2010.     Hgt = picSource.ScaleHeight 'maxY
  2011.     picDest.Width = picSource.Width
  2012.     picDest.Height = picSource.Height
  2013.     picDest.Picture = LoadPicture()
  2014.         
  2015.     'Redimension array
  2016.     ReDim pixels(-1 To Wid, -1 To Hgt) As Long
  2017.     'Read pixels
  2018.     For X = -1 To Wid
  2019.         For Y = -1 To Hgt
  2020.             pixels(X, Y) = picSource.Point(X, Y)
  2021.         Next Y
  2022.          Update_Progress ((X * 100) / Wid), "Extracting Pixels..."
  2023.     Next X
  2024.     frmMain.ProgBar.Cls
  2025.     
  2026.     'begin the loop for calculations
  2027.     For X = -1 To Wid Step stX
  2028.        For Y = -1 To Hgt Step stY
  2029.             bytRed = pixels(X, Y) And pixels(X, Y) Mod &HFF + RVal
  2030.             bytGreen = pixels(X, Y) And pixels(X, Y) Mod &HFF00 + GVal
  2031.             bytBlue = pixels(X, Y) And pixels(X, Y) Mod &HFF0000 + BVal
  2032.             'determine the range
  2033.             If bytRed < 0 Then bytRed = 0
  2034.             If bytGreen < 0 Then bytGreen = 0
  2035.             If bytBlue < 0 Then bytBlue = 0
  2036.             If bytRed > 255 Then bytRed = 255
  2037.             If bytGreen > 255 Then bytGreen = 255
  2038.             If bytBlue > 255 Then bytBlue = 255
  2039.             
  2040.             'restore new pixels
  2041.             If InColor Then
  2042.                 pixels(X, Y) = RGB(bytRed, bytGreen, bytBlue)
  2043.             Else
  2044.                 bytAverage = (bytRed + bytGreen + bytBlue) / 3
  2045.                 pixels(X, Y) = RGB(bytAverage, bytAverage, bytAverage)
  2046.             End If
  2047.             
  2048.          Next Y
  2049.          Update_Progress ((X * 100) / Wid), "Processing Colors..." 'a progress bar
  2050.     Next X
  2051.     frmMain.ProgBar.Cls
  2052.     
  2053.     'Replacing...
  2054.     For X = -1 To Wid
  2055.         For Y = -1 To Hgt
  2056.             picDest.PSet (X - Sin(Y ^ XRaise), Y - Sin(X ^ YRaise)), pixels(X, Y)
  2057.         Next Y
  2058.          Update_Progress ((X * 100) / Wid), "Creating Image..."
  2059.     Next X
  2060.     picDest.Refresh
  2061.     picDest.Picture = picDest.Image
  2062. End Sub
  2063.  
  2064. 'This procedure replaces a specified color of an image
  2065. 'with a specified color
  2066. 'call Replace_Color picture1,picture2,matchcolor,withcolor
  2067. Public Sub Replace_Color(picSource As PictureBox, picDest As PictureBox, _
  2068. ByVal MatchColor As Long, ByVal WithColor As Long)
  2069.     Dim Wid As Single, Hgt As Single
  2070.     Dim X, Y As Single
  2071.     Dim bytRed, bytGreen, bytBlue, bytAverage As Integer
  2072.     Dim pixels() As Long
  2073.     
  2074.   
  2075.     'set the initial values
  2076.     Wid = picSource.ScaleWidth  'maxX
  2077.     Hgt = picSource.ScaleHeight  'maxY
  2078.     picDest.Width = picSource.Width
  2079.     picDest.Height = picSource.Height
  2080.     picDest.Picture = LoadPicture()
  2081.     
  2082.     'Redimension array
  2083.     ReDim pixels(-1 To Wid, -1 To Hgt) As Long
  2084.     
  2085.     'Read pixels
  2086.     For X = -1 To Wid
  2087.         For Y = -1 To Hgt
  2088.                 pixels(X, Y) = picSource.Point(X, Y)
  2089.         Next Y
  2090.         Update_Progress ((X * 100) / Wid), "Extracting Pixels..."
  2091.     Next X
  2092.     frmMain.ProgBar.Cls
  2093.  
  2094.     For X = -1 To Wid
  2095.         For Y = -1 To Hgt
  2096.             bytRed = (pixels(X, Y) And &HFF) ' - (Pixels(X, Y) And &HFF))
  2097.             bytGreen = ((pixels(X, Y) And &HFF00) / &H100) Mod &H100 ' - ((Pixels(X, Y) And &HFF00) / &H100) Mod &H100)
  2098.             bytBlue = ((pixels(X, Y) And &HFF0000) / &H10000) Mod &H100 ' - ((Pixels(X, Y) And &HFF0000) / &H10000) Mod &H100)
  2099.             
  2100.             If bytRed < 0 Then bytRed = 0
  2101.             If bytGreen < 0 Then bytGreen = 0
  2102.             If bytBlue < 0 Then bytBlue = 0
  2103.             
  2104.             If bytRed > 255 Then bytRed = 255
  2105.             If bytGreen > 255 Then bytGreen = 255
  2106.             If bytBlue > 255 Then bytBlue = 255
  2107.             
  2108.             ScanColor = RGB(bytRed, bytGreen, bytBlue)
  2109.             If ScanColor = MatchColor Then
  2110.                 pixels(X, Y) = WithColor
  2111.                
  2112.             Else
  2113.                 pixels(X, Y) = RGB(bytRed, bytGreen, bytBlue)
  2114.             End If
  2115.          
  2116.          Next Y
  2117.          Update_Progress ((X * 100) / Wid), "Processing Colors..." 'a progress bar
  2118.     Next X
  2119.     frmMain.ProgBar.Cls
  2120.     
  2121.     'Replacing...
  2122.     For X = -1 To Wid
  2123.         For Y = -1 To Hgt
  2124.             picDest.PSet (X, Y), pixels(X, Y)
  2125.         Next Y
  2126.          Update_Progress ((X * 100) / Wid), "Creating Image..."
  2127.     Next X
  2128.     frmMain.ProgBar.Cls
  2129.     picDest.Refresh
  2130. picDest.Picture = picDest.Image
  2131. picSource.Picture = picDest.Image
  2132. End Sub
  2133.  
  2134. ' Draws a wave effect of the image
  2135. Sub DrawWaves(picSource As PictureBox, picDest As PictureBox, _
  2136. ByVal Amp As Integer, ByVal WaveLen As Integer, _
  2137. Optional Horizontal As Integer = 0, Optional Vertical As Integer = 0)
  2138.     Dim Wid As Single, Hgt As Single
  2139.     Dim X, Y As Single
  2140.     Dim bytRed, bytGreen, bytBlue, bytAverage As Integer
  2141.     Dim pixels() As Long
  2142.     Dim old_smode As Integer
  2143.     Dim WaveLength As Single
  2144.     Const pi = 3.14159
  2145.     
  2146.     If Horizontal = 0 And Vertical = 0 Then Exit Sub
  2147.     
  2148.     WaveLength = WaveLen * pi
  2149.  
  2150.     'set the initial values
  2151.     Wid = picSource.ScaleWidth  'maxX
  2152.     Hgt = picSource.ScaleHeight  'maxY
  2153.     picDest.Width = picSource.Width
  2154.     picDest.Height = picSource.Height
  2155.     picDest.Picture = LoadPicture()
  2156.     
  2157.     
  2158.     'Redimension array
  2159.     ReDim pixels(-1 To Wid, -1 To Hgt) As Long
  2160.     
  2161.     'Read pixels
  2162.     For X = -1 To Wid
  2163.         For Y = -1 To Hgt
  2164.                 pixels(X, Y) = picSource.Point(X, Y)
  2165.         Next Y
  2166.         Update_Progress ((X * 100) / Wid), "Extracting Pixels..."
  2167.     Next X
  2168.     frmMain.ProgBar.Cls
  2169.     
  2170.     
  2171.     old_smode = picDest.ScaleMode
  2172.     picDest.ScaleMode = 3   ' Pixel.
  2173.     
  2174.     picDest.Picture = LoadPicture()   ' Clear the picture box.
  2175.     For X = -1 To Wid
  2176.         For Y = -1 To Hgt
  2177.             If Horizontal = 1 Then
  2178.                picDest.PSet (X, Y + Amp * Sin(X / WaveLength)), pixels(X, Y) 'horizontal
  2179.             End If
  2180.             If Vertical = 1 Then
  2181.                picDest.PSet (X + Amp * Sin(Y / WaveLength), Y), pixels(X, Y) 'vertical
  2182.             End If
  2183.         Next Y
  2184.         Update_Progress ((X * 100) / Wid), "Replacing Pixels..."
  2185.     Next X
  2186.     frmMain.ProgBar.Cls
  2187.     picDest.Picture = picDest.Image
  2188.     picDest.ScaleMode = old_smode
  2189. End Sub
  2190.  
  2191. 'rotates an image with a clockwise or anticlockwise rotation
  2192. Public Sub Rotate_Image(picSource As PictureBox, picDest As PictureBox, _
  2193. Optional Clockwise90 As Boolean = True)
  2194.     Dim X, Y As Integer
  2195.     Dim Wid As Single, Hgt As Single
  2196.     
  2197.     Wid = picSource.ScaleWidth 'maxX
  2198.     Hgt = picSource.ScaleHeight 'maxY
  2199.     picDest.Width = picSource.Width
  2200.     picDest.Height = picSource.Height
  2201.     picDest.Picture = LoadPicture()
  2202.  
  2203.     'Read pixels and set them
  2204.     For X = -1 To Wid
  2205.         For Y = -1 To Hgt
  2206.         If Clockwise90 Then
  2207.             picDest.PSet ((Hgt - Y - 1), X), picSource.Point(X, Y)
  2208.         Else
  2209.             picDest.PSet (Y, (Wid - X - 1)), picSource.Point(X, Y)
  2210.         End If
  2211.         Next Y
  2212.          Update_Progress ((X * 100) / Wid), "Creating Image..."
  2213.     Next X
  2214.         picDest.Refresh
  2215.     picDest.Picture = picDest.Image
  2216. End Sub
  2217.  
  2218.  
  2219.