www.pudn.com > BMP2JPG.rar > Form1.frm
VERSION 5.00
Object = "{5D1AF2B8-A669-11D3-8E15-C42627F9362B}#6.0#0"; "JPGMaker.ocx"
Begin VB.Form Form1
Caption = "*.BMP to *.JPG图片转换工具 Written by ZHB - http://yxbasic.51.net"
ClientHeight = 4800
ClientLeft = 45
ClientTop = 615
ClientWidth = 7680
Icon = "Form1.frx":0000
LinkTopic = "Form1"
ScaleHeight = 4800
ScaleWidth = 7680
StartUpPosition = 2 '屏幕中心
Begin JPGMaker.JPGMake JPGMake1
Left = 2640
Top = 575
_ExtentX = 661
_ExtentY = 661
End
Begin VB.HScrollBar HScroll1
Height = 252
LargeChange = 5
Left = 120
Max = 100
Min = 1
TabIndex = 1
Top = 925
Value = 50
Width = 3012
End
Begin VB.CommandButton Command2
Caption = "转成 *.JPG图片"
Enabled = 0 'False
Height = 372
Left = 120
TabIndex = 2
Top = 1575
Width = 3012
End
Begin VB.CommandButton Command1
Caption = "选择 *.BMP图片"
Height = 372
Left = 120
TabIndex = 0
Top = 120
Width = 3012
End
Begin VB.Label Node
BackColor = &H00800000&
ForeColor = &H00C00000&
Height = 75
Index = 0
Left = 2880
TabIndex = 10
Top = 2040
Visible = 0 'False
Width = 75
End
Begin VB.Label LblQualityDes
AutoSize = -1 'True
Height = 180
Left = 1560
TabIndex = 9
ToolTipText = "选择 *.JPG图片品质"
Top = 1320
Width = 90
End
Begin VB.Image Image1
Appearance = 0 'Flat
BorderStyle = 1 'Fixed Single
Height = 4580
Left = 3360
ToolTipText = "图片预览区"
Top = 120
Width = 4215
End
Begin VB.Label Label6
AutoSize = -1 'True
Caption = "50 %"
Height = 195
Left = 1560
TabIndex = 8
Top = 600
Width = 345
End
Begin VB.Label Label5
AutoSize = -1 'True
Caption = "-> 高"
Height = 180
Left = 2640
TabIndex = 7
Top = 1320
Width = 450
End
Begin VB.Label Label4
AutoSize = -1 'True
Caption = "低 <-"
Height = 180
Left = 175
TabIndex = 6
Top = 1320
Width = 450
End
Begin VB.Label Label3
AutoSize = -1 'True
Caption = "*.JPG图片品质:"
Height = 180
Left = 120
TabIndex = 5
Top = 600
Width = 1260
End
Begin VB.Label Label2
AutoSize = -1 'True
Caption = "转换信息:"
Height = 180
Left = 120
TabIndex = 4
Top = 2040
Width = 810
End
Begin VB.Label Label1
BorderStyle = 1 'Fixed Single
Height = 2410
Left = 120
TabIndex = 3
Top = 2280
Width = 3015
End
Begin VB.Menu meuFile
Caption = "文件(&F)"
Begin VB.Menu meuOpenBMPFile
Caption = "选择 *.BMP图片"
End
Begin VB.Menu meuConvert
Caption = "转成 *.JGP图片"
Enabled = 0 'False
End
Begin VB.Menu bar
Caption = "-"
End
Begin VB.Menu meuExit
Caption = "退出"
End
End
Begin VB.Menu meuSelectQuality
Caption = "品质(Q)"
Begin VB.Menu meuLow
Caption = "可接受品质"
End
Begin VB.Menu meuMid
Caption = "中品质"
End
Begin VB.Menu meuWinDef
Caption = "Windows默认品质"
Checked = -1 'True
End
Begin VB.Menu meuHigh
Caption = "高品质"
End
Begin VB.Menu meuGood
Caption = "最佳品质"
End
End
Begin VB.Menu meuHelp
Caption = "帮助(&H)"
Begin VB.Menu meuHelpFile
Caption = "帮助文件"
End
Begin VB.Menu bar1
Caption = "-"
End
Begin VB.Menu meuVisitMyWeb
Caption = "访问我的个人主页"
End
Begin VB.Menu meuMailto
Caption = "发送邮件给我..."
End
Begin VB.Menu bar2
Caption = "-"
End
Begin VB.Menu meuAbout
Caption = "关于本软件"
End
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
'实现发送MAIL功能
Private Declare Function shellexecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpoperation As String, ByVal lpfile As String, _
ByVal lpparameters As String, ByVal lpdirectory As String, ByVal nshowcmd As Long) As Long
Private Const SW_SHOW = 5
Dim sFileName As String
Dim jpgFilename As String
Dim Label4Right As Integer
Dim bmpsize As Single
Dim jpgsize As Single
Dim bShow As Boolean
Dim bMove As Boolean
Dim oldX As Single
Dim oldY As Single
Private Sub Command1_Click() '选择文件
Call ShowOpenFile("打开一个.BMP图片", "*.BMP", "Bitmaps图片", sFileName)
If sFileName = "" Then Exit Sub
JPGMake1.FileName = sFileName
jpgFilename = Mid$(sFileName, 1, Len(sFileName) - 4) & ".jpg"
SaveSetting App.EXEName, "Setting", "Init_Dir", jpgFilename
Image1.Picture = LoadPicture(sFileName) '显示原始图片
Command2.Enabled = True
meuConvert.Enabled = True
Call Form_Resize
End Sub
Private Sub Command2_Click() '转换文件
Label1.Caption = ""
JPGMake1.Go
DoEvents
If Dir$(jpgFilename) <> "" Then '判断文件是否转换成功
bmpsize = Int(FileLen(sFileName) / 1024) '计算文件大小,并显示压缩比
jpgsize = Int(FileLen(jpgFilename) / 1024)
Label1.Caption = "BMP 文件大小:" & CStr(bmpsize) & " KB" & vbCrLf & _
"JPG 文件大小:" & CStr(jpgsize) & " KB" & vbCrLf & _
"文件压缩比率:" & Format(jpgsize / bmpsize * 100, "0.0") & "%"
Image1.Picture = LoadPicture(jpgFilename) '显示转换后的图片
Else
Label1.Caption = "未知错误" & vbCrLf & "-文件转换失败!"
End If
Call Form_Resize
End Sub
Private Sub Form_Resize() '自动窗体变化
On Error Resume Next
Label1.Height = Me.Height - 3080
Image1.Height = Me.Height - 905
Image1.Width = Me.Width - 3585
End Sub
Private Sub HScroll1_Change() '选择品质
JPGMake1.Quality = HScroll1.Value
Label6.Caption = CStr(HScroll1.Value) & " %" '显示品质
Select Case HScroll1.Value
Case 1 To 49
LblQualityDes.Caption = "低品质"
meuLow.Checked = False
Case 50
LblQualityDes.Caption = "可接受品质"
Call meuLow_Click
Case 62.5
LblQualityDes.Caption = "中品质"
Call meuMid_Click
Case 75
LblQualityDes.Caption = "Windows默认品质"
Call meuWinDef_Click
Case 87.5
LblQualityDes.Caption = "高品质"
Call meuHigh_Click
Case 100
LblQualityDes.Caption = "最佳品质"
Call meuGood_Click
End Select
Label4Right = (Label4.Left + Label4.Width) '品质标签居中显示
LblQualityDes.Left = (Label5.Left - Label4Right) / 2 - LblQualityDes.Width / 2 + Label4Right
End Sub
Private Sub HScroll1_Scroll()
Call HScroll1_Change
End Sub
Private Sub LblQualityDes_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
PopupMenu meuSelectQuality
End Sub
Private Sub meuAbout_Click()
MsgBox Me.Caption
End Sub
Private Sub meuConvert_Click()
Call Command2_Click
End Sub
Private Sub meuExit_Click()
End
End Sub
Private Sub meuGood_Click() '最佳品质
HScroll1.Value = 100
meuGood.Checked = True
meuLow.Checked = False
meuMid.Checked = False
meuWinDef.Checked = False
meuHigh.Checked = False
End Sub
Private Sub meuHelpFile_Click()
If Dir$(App.Path & "\readme.txt") <> "" Then
Shell "notepad.exe " & App.Path & "\readme.txt", vbNormalFocus '用记事本打开 readme.txt
Else
MsgBox "帮助文件readme.txt未找到!", 64, "提示"
End If
End Sub
Private Sub meuHigh_Click() '高品质
HScroll1.Value = 87.5
meuHigh.Checked = True
meuLow.Checked = False
meuMid.Checked = False
meuWinDef.Checked = False
meuGood.Checked = False
End Sub
Private Sub meuLow_Click() '低品质
HScroll1.Value = 50
meuLow.Checked = True
meuMid.Checked = False
meuWinDef.Checked = False
meuHigh.Checked = False
meuGood.Checked = False
End Sub
Private Sub meuMid_Click() '中品质
HScroll1.Value = 62.5
meuMid.Checked = True
meuLow.Checked = False
meuWinDef.Checked = False
meuHigh.Checked = False
meuGood.Checked = False
End Sub
Private Sub meuOpenBMPFile_Click()
Call Command1_Click
End Sub
Private Sub meuWinDef_Click() '默认的品质
HScroll1.Value = 75
meuWinDef.Checked = True
meuLow.Checked = False
meuMid.Checked = False
meuHigh.Checked = False
meuGood.Checked = False
End Sub
Private Sub Form_Load()
HScroll1.Value = 75 '默认的品质
If Node.Count = 1 Then
Dim i As Integer
For i = 1 To 7
Load Node(i) '载入Node(在Node的Count为1时,表示开始未载入Node)
Next
End If
bShow = False
If Dir$(App.Path & "\sample.bmp") <> "" Then
Image1.Picture = LoadPicture(App.Path & "\sample.bmp")
End If
End Sub
Private Sub Form_Click() '点击窗体时,取消选中
If bShow Then
bShow = False
HideNodes
End If
End Sub
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
SetNodes Image1
End Sub
Private Sub Form_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
SizeObject Source.Index, X, Y
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.MousePointer = vbDefault
End Sub
Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
bMove = True
oldX = X: oldY = Y
End Sub
Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Integer
If bMove Then
Image1.Left = X - oldX + Image1.Left
Image1.Top = Y - oldY + Image1.Top
For i = 0 To 7
Node(i).Visible = False
Next
End If
End Sub
Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Integer
bMove = False
For i = 0 To 7
Node(i).Visible = True
Next
End Sub
Private Sub Node_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
HideNodes
Node(Index).Drag
End Sub
Private Sub Image1_Click()
Dim i As Integer
If Node.Count = 1 Then
For i = 1 To 7
Load Node(i)
Next
End If
bShow = True
SetNodes Image1
End Sub
Private Sub Image1_DragDrop(Source As Control, X As Single, Y As Single)
SetNodes Image1
End Sub
Private Sub Image1_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
With Image1
Select Case Source.Index
Case 0
.Top = .Top + Y
.Left = .Left + X
.Width = .Width - X
.Height = .Height - Y
Case 1
.Left = .Left + X
.Width = .Width - X
Case 2
.Width = .Width - X
.Height = Y
.Left = .Left + X
Case 3
.Height = .Height - Y
.Top = .Top + Y
Case 4
.Height = Y
Case 5
.Width = X
.Height = .Height - Y
.Top = .Top + Y
Case 6
.Width = X
Case 7
.Width = X
.Height = Y
End Select
End With
End Sub
Private Sub Node_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Index
Case 0, 7
Node(Index).MousePointer = 8
Case 1, 6
Node(Index).MousePointer = 9
Case 2, 5
Node(Index).MousePointer = 6
Case 3, 4
Node(Index).MousePointer = 7
End Select
End Sub
Private Sub SetNodes(SelectedControl As Control)
Dim i As Integer
With SelectedControl
For i = 0 To 7
Select Case i
'Left Top
Case 0
Node(i).Left = .Left - Node(i).Width
Node(i).Top = .Top - Node(i).Height
'Left center
Case 1
Node(i).Left = .Left - Node(i).Width
Node(i).Top = .Top + ((.Height - Node(i).Height) / 2)
'Left bottom
Case 2
Node(i).Left = .Left - Node(i).Width
Node(i).Top = .Top + .Height
'Center Top
Case 3
Node(i).Left = .Left + ((.Width + Node(i).Width) / 2)
Node(i).Top = .Top - Node(i).Height
'Center Bottom
Case 4
Node(i).Left = .Left + ((.Width + Node(i).Width) / 2)
Node(i).Top = .Top + .Height
'Right Top
Case 5
Node(i).Left = .Left + .Width
Node(i).Top = .Top - Node(i).Height
'Right Center
Case 6
Node(i).Left = .Left + .Width
Node(i).Top = .Top + ((.Height - Node(i).Height) / 2)
'Right Bottom
Case 7
Node(i).Left = .Left + .Width
Node(i).Top = .Top + .Height
End Select
Node(i).Visible = True
Next
End With
End Sub
Private Sub SizeObject(NodeIndex As Integer, X As Single, Y As Single)
On Error Resume Next
With Image1
Select Case NodeIndex
Case 0
.Width = .Width + (.Left - X)
.Height = .Height + (.Top - Y)
.Left = X
.Top = Y
Case 1
.Width = .Width + (.Left - X)
.Left = X
Case 2
.Width = (.Left - X) + .Width
.Height = Y - .Top
.Left = X
Case 3
.Height = .Height + .Top - Y
.Top = Y
Case 4
.Height = Y - .Top
Case 5
.Width = X - .Left
.Height = .Height + .Top - Y
.Top = Y
Case 6
.Width = X - .Left
Case 7
.Width = X - .Left
.Height = Y - .Top
End Select
End With
End Sub
Private Sub HideNodes()
Dim i As Integer
For i = 0 To 7
Node(i).Visible = False
Next
End Sub
Private Sub meuVisitMyWeb_Click() '浏览我的个人主页
Call shellexecute(Me.hwnd, "open", "http://yxbasic.51.net", "", "", SW_SHOW)
End Sub
Private Sub meuMailto_Click() '联系作者
Call shellexecute(Me.hwnd, "open", "mailto:happybasic@163.com", "", "", SW_SHOW)
End Sub