VFP 自带很多功能强大的基类,有些基类封装了很多 API 函数,只要擅加利用,效果事半功倍。
对于本例来说,步骤如下:
1. 在项目管理器中,切换到“Classes(类)”标签页
2. 单击“Add”按钮,添加类库“c:\Program Files (x86)\Microsoft Visual FoxPro 9\Ffc\_Gdiplus.vcx”
3. 新建一个表单
4. 在项目管理器中展开类库 _Gdiplus,将类“gpimage”拖放到表单,系统自动实例化了一个对象 gpimage1
5. 在表单上添加一个按钮,并在按钮的Click事件中输入以下代码:
程序代码:
对于本例来说,步骤如下:
1. 在项目管理器中,切换到“Classes(类)”标签页
2. 单击“Add”按钮,添加类库“c:\Program Files (x86)\Microsoft Visual FoxPro 9\Ffc\_Gdiplus.vcx”
3. 新建一个表单
4. 在项目管理器中展开类库 _Gdiplus,将类“gpimage”拖放到表单,系统自动实例化了一个对象 gpimage1
5. 在表单上添加一个按钮,并在按钮的Click事件中输入以下代码:
程序代码:LOCAL cFile_BMP,cFile_JPG,oImage,cQuality,i,lOK,nSize
* 指定要转换的 bmp 文件
cFile_BMP = GETPICT('bmp')
IF EMPTY(cFile_BMP) OR !FILE(cFile_BMP)
MESSAGEBOX('文件“'+cFile_BMP+'”不存在!',48,'提示')
RETURN
ENDIF
* 新文件与原文件同名,扩展名改为 jpg
cFile_JPG = FORCEEXT(cFile_BMP,'jpg')
* 装入原文件
oImage = THISFORM.gpimage1
IF !oImage.CreateFromFile(cFile_BMP)
MESSAGEBOX('装入位图文件失败!')
RETURN
ENDIF
* 另存为新文件
FOR i = 100 TO 50 STEP -5 && 图像质量从100%到50%依次转换
cQuality = 'quality=' + TRAN(i)
IF !oImage.SaveToFile(cFile_JPG,'image/jpeg',cQuality)
MESSAGEBOX('保存文件失败!')
RETURN
ENDIF
* 检测文件大小是否满足要求
SET COMPATIBLE ON
nSize = FSIZE(cFile_JPG)
SET COMPATIBLE OFF
IF BETWEEN(nSize,20480,102400)
lOK = .t.
EXIT
ENDIF
NEXT
* 对转换结果给出提示
IF lOK
MESSAGEBOX('文件转换成功!')
ELSE
MESSAGEBOX('转换后的文件大小不满足要求!')
ENDIF

泉城飞狐




