Bezier.frm
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:9k
源码类别:

多媒体

开发平台:

MultiPlatform

  1. VERSION 5.00
  2. Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.1#0"; "COMDLG32.OCX"
  3. Begin VB.Form ppal 
  4.    AutoRedraw      =   -1  'True
  5.    BackColor       =   &H00FFFFFF&
  6.    Caption         =   "VLC skin Curve Maker"
  7.    ClientHeight    =   7140
  8.    ClientLeft      =   165
  9.    ClientTop       =   450
  10.    ClientWidth     =   10440
  11.    Icon            =   "Bezier.frx":0000
  12.    LinkTopic       =   "Form1"
  13.    ScaleHeight     =   476
  14.    ScaleMode       =   3  'Pixel
  15.    ScaleWidth      =   696
  16.    StartUpPosition =   2  'CenterScreen
  17.    Begin VB.PictureBox Pict 
  18.       AutoSize        =   -1  'True
  19.       BorderStyle     =   0  'None
  20.       Height          =   975
  21.       Left            =   2640
  22.       ScaleHeight     =   65
  23.       ScaleMode       =   3  'Pixel
  24.       ScaleWidth      =   73
  25.       TabIndex        =   4
  26.       Top             =   1800
  27.       Visible         =   0   'False
  28.       Width           =   1095
  29.    End
  30.    Begin VB.PictureBox toolbox 
  31.       Align           =   1  'Align Top
  32.       BorderStyle     =   0  'None
  33.       Height          =   900
  34.       Left            =   0
  35.       ScaleHeight     =   900
  36.       ScaleWidth      =   10440
  37.       TabIndex        =   0
  38.       Top             =   0
  39.       Width           =   10440
  40.       Begin VB.HScrollBar Size 
  41.          Height          =   255
  42.          Left            =   4920
  43.          Max             =   5
  44.          Min             =   1
  45.          TabIndex        =   3
  46.          Top             =   480
  47.          Value           =   1
  48.          Width           =   2655
  49.       End
  50.       Begin VB.HScrollBar Color 
  51.          Height          =   255
  52.          Left            =   4920
  53.          Max             =   15
  54.          TabIndex        =   2
  55.          Top             =   120
  56.          Width           =   2655
  57.       End
  58.       Begin VB.TextBox Result 
  59.          Height          =   615
  60.          Left            =   120
  61.          Locked          =   -1  'True
  62.          MultiLine       =   -1  'True
  63.          TabIndex        =   1
  64.          Top             =   120
  65.          Width           =   4575
  66.       End
  67.    End
  68.    Begin MSComDlg.CommonDialog Cmd 
  69.       Left            =   7560
  70.       Top             =   120
  71.       _ExtentX        =   847
  72.       _ExtentY        =   847
  73.       _Version        =   327680
  74.    End
  75.    Begin VB.Menu m_file 
  76.       Caption         =   "&File"
  77.       Begin VB.Menu m_load 
  78.          Caption         =   "Load..."
  79.       End
  80.       Begin VB.Menu m_saveas 
  81.          Caption         =   "Save as..."
  82.       End
  83.       Begin VB.Menu m_sep1 
  84.          Caption         =   "-"
  85.       End
  86.       Begin VB.Menu m_quit 
  87.          Caption         =   "Quit"
  88.       End
  89.    End
  90.    Begin VB.Menu m_picture 
  91.       Caption         =   "Picture"
  92.       Begin VB.Menu m_loadpicture 
  93.          Caption         =   "Load..."
  94.       End
  95.    End
  96.    Begin VB.Menu m_tool 
  97.       Caption         =   "Tool"
  98.       Visible         =   0   'False
  99.       Begin VB.Menu m_addpoint 
  100.          Caption         =   "AddPoint"
  101.       End
  102.       Begin VB.Menu m_center 
  103.          Caption         =   "Center"
  104.       End
  105.    End
  106.    Begin VB.Menu m_point 
  107.       Caption         =   "Point"
  108.       Visible         =   0   'False
  109.       Begin VB.Menu m_deletept 
  110.          Caption         =   "Delete"
  111.       End
  112.    End
  113. End
  114. Attribute VB_Name = "ppal"
  115. Attribute VB_GlobalNameSpace = False
  116. Attribute VB_Creatable = False
  117. Attribute VB_PredeclaredId = True
  118. Attribute VB_Exposed = False
  119. Dim xe As Single
  120. Dim ye As Single
  121. Dim Sel As Long
  122. Dim MouseX As Long
  123. Dim MouseY As Long
  124. Dim SelectPt As Long
  125. Dim PictureFile As String
  126. Dim CurveFile As String
  127. Dim OffsetX As Long
  128. Dim OffsetY As Long
  129. Sub form_draw()
  130. Dim i As Long
  131. Me.Cls
  132. BitBlt ppal.hdc, OffsetX, OffsetY, Pict.Width, Pict.Height, imgDC, 0, 0, SRCCOPY
  133. If MaxPt < 0 Then Exit Sub
  134. Call bezier_draw(40, OffsetX, OffsetY)
  135. Me.DrawWidth = 1
  136. For i = 0 To MaxPt
  137.     Me.Line (OffsetX + Pt(i).x - 6, OffsetY + Pt(i).y - 6)-(OffsetX + Pt(i).x + 6, OffsetY + Pt(i).y + 6), QBColor(Color.Value), B
  138. Next i
  139. Me.DrawWidth = Size.Value
  140. End Sub
  141. Sub RefreshResult()
  142. Dim i As Long
  143. Result.Text = "abs="""
  144. For i = 0 To MaxPt
  145.     If i > 0 Then Result.Text = Result.Text & ","
  146.     Result.Text = Result.Text & Pt(i).x
  147. Next i
  148. Result.Text = Result.Text & """" & Chr$(13) & Chr$(10) & "ord="""
  149. For i = 0 To MaxPt
  150.     If i > 0 Then Result.Text = Result.Text & ","
  151.     Result.Text = Result.Text & Pt(i).y
  152. Next i
  153. Result.Text = Result.Text & """"
  154. End Sub
  155. Private Sub Color_Change()
  156. form_draw
  157. End Sub
  158. Private Sub Form_Load()
  159. PictureFile = "none"
  160. MaxPt = -1
  161. OffsetX = 0
  162. OffsetY = 0
  163. 'Pict.Width = 0
  164. 'Pict.Height = 0
  165. Call m_center_Click
  166. End Sub
  167. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  168. Dim i As Long
  169. If Button = 2 Then
  170.     For i = 0 To MaxPt
  171.         If Pt(i).x + OffsetX > x - 5 And Pt(i).x + OffsetX < x + 5 Then
  172.             If Pt(i).y + OffsetY > y - 5 And Pt(i).y + OffsetY < y + 5 Then
  173.                 SelectPt = i + 1
  174.                 Me.PopupMenu m_point
  175.                 Exit Sub
  176.             End If
  177.         End If
  178.     Next i
  179.     MouseX = x
  180.     MouseY = y
  181.     Me.PopupMenu m_tool
  182. ElseIf Button = 1 Then
  183.     For i = 0 To MaxPt
  184.         If Pt(i).x + OffsetX > x - 5 And Pt(i).x + OffsetX < x + 5 Then
  185.             If Pt(i).y + OffsetY > y - 5 And Pt(i).y + OffsetY < y + 5 Then
  186.                 SelectPt = i + 1
  187.                 Exit Sub
  188.             End If
  189.         End If
  190.     Next i
  191.     SelectPt = 0
  192.     Me.MousePointer = 5
  193.     MouseX = x
  194.     MouseY = y
  195. End If
  196. End Sub
  197. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
  198. If Button = 1 Then
  199.     If SelectPt > 0 Then
  200.         Pt(SelectPt - 1).x = x - OffsetX
  201.         Pt(SelectPt - 1).y = y - OffsetY
  202.         form_draw
  203.     Else
  204.         OffsetX = OffsetX - (x - MouseX)
  205.         OffsetY = OffsetY - (y - MouseY)
  206.         MouseX = x
  207.         MouseY = y
  208.         form_draw
  209.     End If
  210. ElseIf Button = 0 Then
  211.     For i = 0 To MaxPt
  212.         If Pt(i).x + OffsetX > x - 5 And Pt(i).x + OffsetX < x + 5 Then
  213.             If Pt(i).y + OffsetY > y - 5 And Pt(i).y + OffsetY < y + 5 Then
  214.                 SelectPt = i + 1
  215.                 Me.MousePointer = 10
  216.                 Exit Sub
  217.             End If
  218.         End If
  219.     Next i
  220.     Me.MousePointer = 0
  221. End If
  222. End Sub
  223. Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
  224. If Button = 1 Then
  225.     If SelectPt > 0 Then
  226.         SelectPt = 0
  227.         form_draw
  228.         Call RefreshResult
  229.     End If
  230.     Me.MousePointer = 0
  231. End If
  232. End Sub
  233. Private Sub m_addpoint_Click()
  234. MaxPt = MaxPt + 1
  235. Call make_pt(MaxPt, MouseX - OffsetX, MouseY - OffsetY)
  236. Call form_draw
  237. Call RefreshResult
  238. End Sub
  239. Private Sub m_center_Click()
  240. OffsetX = (Me.ScaleWidth - Pict.Width) / 2
  241. OffsetY = (Me.ScaleHeight - Pict.Height - toolbox.Height) / 2
  242. form_draw
  243. End Sub
  244. Private Sub m_deletept_Click()
  245. Dim i As Long
  246. MaxPt = MaxPt - 1
  247. For i = SelectPt - 1 To MaxPt
  248.     Pt(i).x = Pt(i + 1).x
  249.     Pt(i).y = Pt(i + 1).y
  250. Next
  251. form_draw
  252. Call RefreshResult
  253. End Sub
  254. Private Sub m_load_Click()
  255. Dim F As FileSystemObject
  256. Set F = New FileSystemObject
  257. Cmd.filename = CurveFile
  258. Cmd.CancelError = False
  259. Cmd.DialogTitle = "Open Curve"
  260. Cmd.Filter = "Fichier VLC curve |*.curve.vlc"
  261. Cmd.FilterIndex = 0
  262. Cmd.InitDir = App.Path
  263. Cmd.ShowOpen
  264. If Not F.FileExists(Cmd.filename) Then Exit Sub
  265. CurveFile = Cmd.filename
  266. Dim i As Long, l As Long
  267. Open CurveFile For Binary As #1
  268.     Get #1, , l
  269.     PictureFile = Space$(l)
  270.     Get #1, , PictureFile
  271.     Get #1, , OffsetX
  272.     Get #1, , OffsetY
  273.     Get #1, , MaxPt
  274.     For i = 0 To MaxPt
  275.         Get #1, , Pt(i).x
  276.         Get #1, , Pt(i).y
  277.     Next i
  278. Close #1
  279. If PictureFile <> "none" Then Pict.Picture = LoadPicture(PictureFile)
  280. Call form_draw
  281. Call RefreshResult
  282. End Sub
  283. Private Sub m_loadpicture_Click()
  284. Dim F As FileSystemObject
  285. Set F = New FileSystemObject
  286. Cmd.CancelError = False
  287. Cmd.DialogTitle = "Open picture"
  288. Cmd.Filter = "Fichier bitmap |*.bmp"
  289. Cmd.FilterIndex = 0
  290. Cmd.InitDir = App.Path
  291. Cmd.ShowOpen
  292. If Not F.FileExists(Cmd.filename) Then Exit Sub
  293. PictureFile = Cmd.filename
  294. Pict.Picture = LoadPicture(Cmd.filename)
  295. Dim HBitmap As Long
  296. HBitmap = LoadImage(0, Cmd.filename, 0, 0, 0, 16)
  297. imgDC = CreateCompatibleDC(0)
  298. SelectObject imgDC, HBitmap
  299. Pict.AutoSize = True
  300. Call m_center_Click
  301. End Sub
  302. Private Sub m_quit_Click()
  303. End
  304. End Sub
  305. Private Sub m_saveas_Click()
  306. Dim F As FileSystemObject
  307. Set F = New FileSystemObject
  308. On Error GoTo error
  309. Cmd.CancelError = True
  310. Cmd.DialogTitle = "Save Curve"
  311. Cmd.Filter = "Fichier VLC curve |*.curve.vlc"
  312. Cmd.FilterIndex = 0
  313. Cmd.InitDir = App.Path
  314. Cmd.ShowSave
  315. CurveFile = Cmd.filename
  316. Dim i As Long
  317. Open CurveFile For Binary As #1
  318.     Put #1, , CLng(Len(PictureFile))
  319.     Put #1, , PictureFile
  320.     Put #1, , OffsetX
  321.     Put #1, , OffsetY
  322.     Put #1, , MaxPt
  323.     For i = 0 To MaxPt
  324.         Put #1, , Pt(i).x
  325.         Put #1, , Pt(i).y
  326.     Next i
  327. Close #1
  328. error:
  329. End Sub
  330. Private Sub Size_Change()
  331. Me.DrawWidth = Size.Value
  332. form_draw
  333. End Sub