BGI.PRG
上传用户:abc1382430
上传日期:2013-01-31
资源大小:1233k
文件大小:4k
源码类别:

行业应用

开发平台:

VFP

  1. *********************************************************
  2. *
  3. * Name: Bgi
  4. *       此程序演示基本图形函数
  5. *
  6. *********************************************************
  7. set talk off
  8. set curs off
  9. set path to ..
  10. do LoadSDK
  11. priv all like P_*
  12. P_Color='B/W,W+/B,W/W,W+/B,W/B,W+/B,GR/W,W/B,N/W,W+/W'
  13. =DefiWind("Demo",1,2,srows()-2,scols()-3,"colo &P_Color titl '图形函数演示'")
  14. =ActiWind("Demo")
  15. Demo_X1=C2X(1)
  16. Demo_Y1=R2Y(1)
  17. Demo_X2=C2X(wcol("Demo")-1)
  18. Demo_Y2=R2Y(wrow("Demo"))
  19. Demo_X=(Demo_X2-Demo_X1)/2+Demo_X1
  20. Demo_Y=(Demo_Y2-Demo_Y1)/2+Demo_Y1
  21. =DnRect(Demo_X1-1,Demo_Y1-1,Demo_X2+1,Demo_Y2+1)
  22. do PixelDemo
  23. if last()#27
  24. do LineDemo
  25. endi
  26. if last()#27
  27. do RectDemo
  28. endi
  29. if last()#27
  30. do BarDemo
  31. endi
  32. if last()#27
  33. do ElpDemo
  34. endi
  35. if last()#27
  36. do SectorDemo
  37. endi
  38. =ReleWind('Demo')
  39. retu
  40. func RandNum
  41. para LowLimit,HighLimit
  42. retu LowLimit+rand()*(HighLimit-LowLimit)
  43. *----------------------------------------------------------------------
  44. func PixelDemo
  45. =SetFillStyle(1,0)
  46. =DrawBar(Demo_X1,Demo_Y1,Demo_X2,Demo_Y2)
  47. for P_Counter=1 to 3000
  48. P_X1=int(RandNum(Demo_X1,Demo_X2))
  49. P_Y1=int(RandNum(Demo_Y1,Demo_Y2))
  50. P_Color=int(RandNum(0,255))
  51. =PutPixel(P_X1,P_Y1,P_Color)
  52. if chrs()
  53. exit
  54. endi
  55. endf
  56. =inke()
  57. retu
  58. *----------------------------------------------------------------------------
  59. proc LineDemo
  60. priv all like P_*
  61. =SetFillStyle(1,0)
  62. =DrawBar(Demo_X1,Demo_Y1,Demo_X2,Demo_Y2)
  63. for P_Counter=1 to 2000
  64. P_X1=int(RandNum(Demo_X1,Demo_X2))
  65. P_Y1=int(RandNum(Demo_Y1,Demo_Y2))
  66. P_X2=Demo_X+(Demo_X-P_X1)
  67. P_Y2=Demo_Y+(Demo_Y-P_Y1)
  68. P_Color=int(rand()*255)
  69. =SetColor(P_Color)
  70. =DrawLine(P_X1,P_Y1,P_X2,P_Y2)
  71. if chrs()
  72. exit
  73. endi
  74. endf
  75. if inke()=27
  76. retu
  77. endi
  78. =inke()
  79. retu
  80. *------------------------------------------------------------------------
  81. func RectDemo
  82. priv all like P_*
  83. =SetFillStyle(1,0)
  84. =DrawBar(Demo_X1,Demo_Y1,Demo_X2,Demo_Y2)
  85. for P_Counter=1 to 1000
  86. P_X1=int(RandNum(Demo_X1,Demo_X2))
  87. P_Y1=int(RandNum(Demo_Y1,Demo_Y2))
  88. P_X2=Demo_X+(Demo_X-P_X1)
  89. P_Y2=Demo_Y+(Demo_Y-P_Y1)
  90. * P_X2=int(RandNum(Demo_X1,Demo_X2))
  91. * P_Y2=int(RandNum(Demo_Y1,Demo_Y2))
  92. P_Color=int(rand()*255)
  93. =SetColor(P_Color)
  94. =Rect(P_X1,P_Y1,P_X2,P_Y2)
  95. if chrs()
  96. exit
  97. endi
  98. endf
  99. =inke()
  100. retu
  101. *------------------------------------------------------------------------
  102. func BarDemo
  103. priv all like P_*
  104. =SetFillStyle(1,0)
  105. =DrawBar(Demo_X1,Demo_Y1,Demo_X2,Demo_Y2)
  106. for P_Counter=1 to 500
  107. P_X1=int(RandNum(Demo_X1,Demo_X2))
  108. P_Y1=int(RandNum(Demo_Y1,Demo_Y2))
  109. P_X2=int(RandNum(Demo_X1,Demo_X2))
  110. P_Y2=int(RandNum(Demo_Y1,Demo_Y2))
  111. P_Color=int(rand()*255)
  112. P_Style=int(rand()*11)
  113. =SetFillStyle(P_Style,P_Color)
  114. =DrawBar(P_X1,P_Y1,P_X2,P_Y2)
  115. =SetColor(P_Color)
  116. =Rect(P_X1,P_Y1,P_X2,P_Y2)
  117. if chrs()
  118. exit
  119. endi
  120. endf
  121. =inke()
  122. =SetFillStyle(1,0)
  123. retu
  124. *------------------------------------------------------------------------
  125. func ElpDemo
  126. priv all like P_*
  127. =SetFillStyle(1,0)
  128. =DrawBar(Demo_X1,Demo_Y1,Demo_X2,Demo_Y2)
  129. for P_Counter=1 to 500
  130. P_X=int(RandNum(Demo_X1+10,Demo_X2-10))
  131. P_Y=int(RandNum(Demo_Y1+10,Demo_Y2-10))
  132. P_RX=min(Demo_X2-P_X,P_X-Demo_X1)/2-5
  133. P_RY=min(Demo_Y2-P_Y,P_Y-Demo_Y1)/2-5
  134. P_RX=int(RandNum(0,P_RX))+10
  135. P_RY=int(RandNum(0,P_RY))+10
  136. P_RX=iif(P_RX<10,10,P_RX)
  137. P_RY=iif(P_RY<10,10,P_RY)
  138. P_Color=int(rand()*255)
  139. =SetColor(P_Color)
  140. =Ellipse(P_X,P_Y,0,360,P_RX,P_RY)
  141. if chrs()
  142. exit
  143. endi
  144. endf
  145. =inke()
  146. retu
  147. *------------------------------------------------------------------------
  148. func SectorDemo
  149. priv all like P_*
  150. =SetFillStyle(1,0)
  151. =DrawBar(Demo_X1,Demo_Y1,Demo_X2,Demo_Y2)
  152. for P_Counter=1 to 500
  153. P_X=int(RandNum(Demo_X1+10,Demo_X2-10))
  154. P_Y=int(RandNum(Demo_Y1+10,Demo_Y2-10))
  155. P_RX=min(Demo_X2-P_X,P_X-Demo_X1)/2-5
  156. P_RY=min(Demo_Y2-P_Y,P_Y-Demo_Y1)/2-5
  157. P_RX=int(RandNum(0,P_RX))+10
  158. P_RY=int(RandNum(0,P_RY))+10
  159. P_RX=iif(P_RX<10,10,P_RX)
  160. P_RY=iif(P_RY<10,10,P_RY)
  161. P_A1=int(rand()*360)
  162. P_A2=int(rand()*360)
  163. P_Color=int(rand()*255)
  164. =SetColor(P_Color)
  165. =Sector(P_X,P_Y,P_A1,P_A2,P_RX,P_RY)
  166. if chrs()
  167. exit
  168. endi
  169. endf
  170. =inke()
  171. retu