| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2406 人关注过本帖, 1 人收藏
标题:跪求:如何用VFP实现在全屏中找图的功能。
只看楼主 加入收藏
JHKCHEN
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2011-5-31
结帖率:10%
收藏(1)
 问题点数:0 回复次数:15 
跪求:如何用VFP实现在全屏中找图的功能。
在vb中能调用API实现全屏中找图的功能。因VFP没有定义结构,该如何实现此功能呢?
请大师们帮忙。
搜索更多相关主题的帖子: 如何 
2012-12-14 19:34
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:0 
结贴率这么低,问题还连一点点数都没有。

坚持学习vfp,QQ:306805680
2012-12-14 21:19
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11803
专家分:43421
注 册:2006-5-13
收藏
得分:0 
新人,可能是给不出分。
按理VFP也同样可以调用API来实现找图的。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-12-14 21:23
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:0 
vfp处理图像,可以用木瓜的myimg.fll
程序代码:
* MyImg.fll
* 主要功能:抓屏、裁剪、缩放、旋转、格式转换、生成到变量、复制到剪贴板
* 作者:木瓜:
* 2007-07-14
* 调用顺序:ImgOpen()  -->  其它函数 -->ImgClose() ,发生错误时,使用ImgGetLastError读取错误
#define _FROM_SCREEN        1
#define _FROM_CLIPBORD        2
#define _IMG_BMP            1
#define _IMG_GIF            2
#define _IMG_JPG            3
#define _IMG_PNG            4
#define _IMG_TIF            5
Clear 
Set Library To myImg
* 1. 打开图像 屏幕、剪贴板

 hImg = ImgOpen(_FROM_SCREEN)        &&打开屏幕
* hImg = ImgOpen(_FROM_CLIPBORD)    &&打开剪切板
* hImg = ImgOpen( cFileName )        &&打开图像
If hImg==""
    MessageBox("打开图像失败!")
    Return 
EndIf 
ImgSave(hImg,"1原始图.bmp",_IMG_BMP)
* 2. 取得图像大小
?"宽度:",ImgGetWidth(hImg)
?"高度:",ImgGetHeight(hImg)
* 3. 裁剪 ImgCrop(参数:句柄,左,上,宽,高)
If not ImgCrop(hImg,10,10,500,300) &&(从(10,10)坐标开始,生成一个宽500,高300的图像 
    MessageBox(ImgGetLastError(hImg),"裁剪失败!")
EndIf 
ImgSave(hImg,"3裁剪后.bmp",1)
* 4. 缩放 ImgZoom(句柄,新宽度,新高度)
If not ImgZoom(hImg,400,400)  &&缩放到400×400的图像
    MessageBox(ImgGetLastError(hImg),"缩放失败!")
EndIf 
ImgSave(hImg,"4缩放后.bmp",1)
* 5.旋转 ImgRotate(句柄,角度)
If not imgRotate(hImg,90)
    MessageBox(ImgGetLastError(hImg),"旋转失败!")
EndIf 
ImgSave(hImg,"5旋转后.bmp",1)

* 6.格式转换
If not ImgSave(hImg,"6格式转换.png",_IMG_PNG)  &&第二个参数为文件名,第三个为图片类型
    MessageBox(ImgGetLastError(hImg),"格式转换失败!")
EndIf 
* 7. 如果要转JPG,可以设jpg的品质 1-100
ImgSetJpegQuality(hImg,70)    &&设置jpg的品质
If not ImgSave(hImg,"7格式转换.jpg",_IMG_JPG)
    MessageBox(ImgGetLastError(hImg),"另存为失败!")
EndIf 
* 8. 复制到剪贴版
If ImgCopyToClipbord(hImg) 
    MessageBox("已复制到剪贴板,可以打开画图程序粘贴")
Else
    MessageBox(ImgGetLastError(hImg),"复制到剪贴板失败!") 
EndIf 
* 9.直接取得图像内容到变量(返回的是一个变量,可直接存入数据库)
vImgSrc = ImgGetPtr(hImg,_IMG_GIF)  &&获取Gif格式的图像内容
StrToFile(vImgSrc,"9使用内存变量.gif")
* 10.关闭图像
ImgClose(hImg)
* 11.从内存变量中创建 ( vImgSrc是前面生成的,也可以用FileToStr取得
hImg2=ImgOpen(vImgSrc,_IMG_GIF)
If hImg2==""
    MessageBox(ImgGetLastError(hImg),"从变量打开图像失败!")
    Return 
EndIf 
*  12.与Vfp9的PictureVal结合使用,ImgGetPtr()的返回值可直接赋给PictureVal
If Val(_vfp.Version) >=9  
    Local oForm as Form 
    oForm=CreateObject("form")
    oForm.AddObject("image","image")
    With oForm.image as Image 
        .Visible=.t.
        .PictureVal = ImgGetPtr(hImg2,_IMG_TIF)  && 把格式转为tif,赋给image控件的PictureVal
    EndWith 
    oForm.Show(1)
EndIf 
*13.获取DPI
?"DPI:",ImgGetXDpi(hImg),ImgGetXDpi(hImg)
ImgClose(hImg2)
* 14 灰度
hImg=ImgOpen(_FROM_SCREEN)
ImgSetGray(hImg)
ImgSave(hImg,"灰度处理后的屏幕.gif",_IMG_TIF)
ImgClose(hImg)


* 15 帧操作多页tif和动画gif均可这么操作:
cFile="fox.gif"  &&这是一个动画
hImg=ImgOpen(cFile)
If hImg==""
    MessageBox("无法打开图像!")
    Return 
EndIf 
*取得帧数
nFrames=ImgGetFramesCount(hImg)
?"此文件共有帧数:",nFrames
ImgClose(hImg) &&关闭
*取得每一帧
For x=1 to nFrames
    hImg=ImgOpen(cFile,0,x)  &&打开第 x 帧,第二个参数可以忽略
    If hImg==""
        MessageBox("无法打开第"+Transform(x)+"帧!")
        Loop 
    EndIf 
    ?"正在生成第",x,"帧……"
    ImgSave(hImg,"Frame"+Transform(x)+".gif",_IMG_GIF)
    ImgClose(hImg)  &&每一帧是一个单独的句柄,都要关闭
EndFor 
Set Library To 
收到的鲜花
  • qingfameng2012-12-15 00:53 送鲜花  5朵   附言:我很赞同

坚持学习vfp,QQ:306805680
2012-12-14 21:45
晴非得雨
Rank: 2
等 级:论坛游民
帖 子:14
专家分:45
注 册:2012-10-9
收藏
得分:0 
新人给不出分
2012-12-14 21:48
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:0 
回复 5楼 晴非得雨
及时结贴,可以返还80%的可用分的,只要及时结贴,可用分是用不完的。

坚持学习vfp,QQ:306805680
2012-12-14 21:56
JHKCHEN
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2011-5-31
收藏
得分:0 
本人研究了以下,vfp调用API恐难实现此功能
换个思路:假设有d:\1.bmp,如果能将该BMP的每一个点的BGR值存到一个数组中
就能实现此在全屏中找1.BMP是否存在的功能。
请高手指点如何将d:\1.bmp,如果能将该BMP的每一个点的BGR值存到一个数组中?
2012-12-14 22:38
月沐庭轩
Rank: 9Rank: 9Rank: 9
来 自:京城
等 级:贵宾
威 望:17
帖 子:393
专家分:1106
注 册:2011-7-24
收藏
得分:0 
http://wenku.baidu.com/view/a41934db50e2524de5187e0c.html
看看这个图像格式,可以考虑用低级文件读取的办法和ctobin等函数来达到要求。不用api好像也是可以的。

坚持学习vfp,QQ:306805680
2012-12-15 00:05
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
收藏
得分:0 
全屏找图 ?
全屏抓图 ?

个性太多,无法显示
2012-12-15 11:56
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
收藏
得分:0 
以下是引用月沐庭轩在2012-12-14 21:19:37的发言:

结贴率这么低,问题还连一点点数都没有。
讨论问题
不一定非得要点数啊
呵呵

个性太多,无法显示
2012-12-15 11:57
快速回复:跪求:如何用VFP实现在全屏中找图的功能。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014915 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved