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
泉城飞狐