VB6.0å¯ä½¿ç¨SavePicture è¯å¥æ¥ä¿åçªä½æå¾åæ¡ä¸ç»ä¿®æ¹çå¾çã
1ï¼SavePicture è¯å¥ï¼ä»å¯¹è±¡ææ§ä»¶ï¼å¦ææä¸ä¸ªä¸å
¶ç¸å
³ï¼ç Picture æ Image å±æ§ä¸å°å¾å½¢ä¿åå°æ件ä¸ã
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/6159252dd42a28348b168de25db5c9ea14cebfa3?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)
说æï¼æ 论å¨è®¾è®¡æ¶è¿æ¯è¿è¡æ¶å¾å½¢ä»æ件å è½½å°å¯¹è±¡ç Picture
å±æ§ï¼èä¸å®æ¯ä½å¾ãå¾æ ãå
æ件æå¢å¼ºå
æ件ï¼åå¾å½¢å°ä»¥åå§æ件åæ ·çæ ¼å¼ä¿åãå¦æå®æ¯ GIF æ JPEG æ件ï¼åå°ä¿å为ä½å¾æ件ã
2ï¼AutoRedraw å±æ§ï¼è¿åæ设置ä»å¾å½¢æ¹æ³å°æä¹
å¾å½¢çè¾åºã
该å±æ§ä¸ºTrueï¼å¯ä½¿ Form 对象æ PictureBox
æ§ä»¶çèªå¨éç»ææãå¾å½¢åææ¬è¾åºå°å±å¹ï¼å¹¶åå¨å¨å
åçå¾è±¡ä¸ã该对象ä¸æ¥åç»å¶äºä»¶ï¼å¿
è¦æ¶ï¼ç¨åå¨å¨å
åä¸çå¾è±¡è¿è¡éç»ã
以ä¸ä»£ç ä¿åçªä½è£
载并è¿è¡æå修饰çå¾çï¼
Option Explicit
Private Sub Command1_Click()
SavePicture Image, App.Path & "\TEST" ' å°å¾çä¿åå°æ件ã
End Sub
Private Sub Form_Click()
FontSize = 24
Print " å°å¾çä¿åå°æ件"
End Sub
Private Sub Form_Load()
Me.AutoRedraw = True
End Sub
3ï¼è¥è¦ä¿å为JPGå¾çéè¦éå使ç¨APIå½æ°å®ç°ãåè以ä¸æ¥éª¤å代ç ï¼
a.å¨å¾çæ¡å è½½éè¦æ·»å æåæ°´å°çå¾çã
b.使ç¨å¦ä¸ä»£ç å®ç°æ·»å æåå°å¾çæ¡ã
Private Sub CmdEdit_Click() 'ä¿®æ¹
Dim strTxt As String
strTxt = "é£é¨æ é» ææ"
Picture1.FontSize = 18
Picture1.CurrentY = Picture1.ScaleHeight - 30
Picture1.CurrentX = Picture1.ScaleWidth / 2 - Picture1.TextWidth(strTxt) / 2
Picture1.ForeColor = vbWhite
Picture1.FontItalic = True
Picture1.Print strTxt
End Sub
c.å°ä»¥ä¸API转æ¢å¾çæ ¼å¼ä»£ç æ¾ç½®äºæ å模åï¼æ¨¡åå½å为saveApgã
Option Explicit
Public Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Public Type GdiplusStartupInput
GdiplusVersion As Long
DebugEventCallback As Long
SuppressBackgroundThread As Long
SuppressExternalCodecs As Long
End Type
Public Type EncoderParameter
GUID As GUID
NumberOfValues As Long
type As Long
Value As Long
End Type
Public Type EncoderParameters
Count As Long
Parameter As EncoderParameter
End Type
Public Declare Function GdiplusStartup Lib "GDIPlus" (token As Long, inputbuf As GdiplusStartupInput, ByVal outputbuf As Long) As Long
Public Declare Function GdiplusShutdown Lib "GDIPlus" (ByVal token As Long) As Long
Public Declare Function GdipCreateBitmapFromHBITMAP Lib "GDIPlus" (ByVal hbm As Long, ByVal hpal As Long, Bitmap As Long) As Long
Public Declare Function GdipDisposeImage Lib "GDIPlus" (ByVal Image As Long) As Long
Public Declare Function GdipSaveImageToFile Lib "GDIPlus" (ByVal Image As Long, ByVal fileName As Long, clsidEncoder As GUID, encoderParams As Any) As Long
Public Declare Function CLSIDFromString Lib "ole32" (ByVal str As Long, id As GUID) As Long
Public Declare Function GdipCreateBitmapFromFile Lib "GDIPlus" (ByVal fileName As Long, Bitmap As Long) As Long
Public Function PictureBoxSaveJPG(ByVal pict As StdPicture, ByVal fileName As String, Optional ByVal quality As Byte = 80) As Boolean
Dim tSI As GdiplusStartupInput
Dim lRes As Long
Dim lGDIP As Long
Dim lBitmap As Long
'åå§å GDI+
tSI.GdiplusVersion = 1
lRes = GdiplusStartup(lGDIP, tSI, 0)
If lRes = 0 Then
'ä»å¥æå建 GDI+ å¾å
lRes = GdipCreateBitmapFromHBITMAP(pict.Handle, 0, lBitmap)
If lRes = 0 Then
Dim tJpgEncoder As GUID
Dim tParams As EncoderParameters
'åå§å
解ç å¨çGUIDæ è¯
CLSIDFromString StrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
'设置解ç å¨åæ°
tParams.Count = 1
With tParams.Parameter ' Quality
'å¾å°Qualityåæ°çGUIDæ è¯
CLSIDFromString StrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"), .GUID
.NumberOfValues = 1
.type = 4
.Value = VarPtr(quality)
End With
'ä¿åå¾å
lRes = GdipSaveImageToFile(lBitmap, StrPtr(fileName), tJpgEncoder, tParams)
'éæ¯GDI+å¾å
GdipDisposeImage lBitmap
End If
'éæ¯ GDI+
GdiplusShutdown lGDIP
End If
If lRes Then
PictureBoxSaveJPG = False
Else
PictureBoxSaveJPG = True
End If
End Function
d.使ç¨ä»¥ä¸ä»£ç å®ç°å°å 好æåæ°´å°å¾çä¿å为jpgæ ¼å¼å¾çã
Private Sub Command3_Click() 'ä¿å为.jpgå¾ç
' 设置âCancelErrorâ为 True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' 设置æ å¿
CommonDialog1.Flags = cdlOFNHideReadOnly
' 设置è¿æ»¤å¨
CommonDialog1.Filter = "JPEG Files" & "(*.jpg)|*.jpg"
' æå®ç¼ºççè¿æ»¤å¨
CommonDialog1.FilterIndex = 2
' æ¾ç¤ºâæå¼â对è¯æ¡
CommonDialog1.ShowSave
' æ¾ç¤ºéå®æ件çåå
'MsgBox CommonDialog1.fileName
Set Picture2.Picture = Picture1.Image '转移Picture1æç»å¾ä¸ºPicture2.Pictureèµå¼
Dim ret As Boolean
ret = PictureBoxSaveJPG(Picture2, CommonDialog1.fileName) 'ä¿åå缩åçå¾ç
If ret = False Then
MsgBox "ä¿å失败"
End If
Exit Sub
ErrHandler:
' ç¨æ·æäºâåæ¶âæé®
Exit Sub
End Sub