标题:请问:vfp中如何把剪贴板中的图像保存为BMP格式文件?
只看楼主
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
结帖率:91.67%
已结贴  问题点数:20 回复次数:7 
请问:vfp中如何把剪贴板中的图像保存为BMP格式文件?
如题,请大家帮忙......
搜索更多相关主题的帖子: 文件 格式 图像 BMP vfp 
2010-01-20 13:36
pmc1234
Rank: 5Rank: 5
等 级:职业侠客
帖 子:398
专家分:383
注 册:2010-1-6
得分:10 
这个在进入vfp之前应该把图片设置好吧
2010-01-20 19:56
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:10 
先将剪贴板的数据保存到变量中,然后再试着保存为图形文件,这样做不知道能行么。

活到老,学到老! http://www. E-mail:hu-jj@
2010-01-20 20:41
iamhyf
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2010-1-5
得分:0 
我从网上下载的代码,,略作修改,如下:
    DECLARE INTEGER OpenClipboard IN user32 INTEGER
    DECLARE INTEGER CloseClipboard IN user32
    DECLARE INTEGER EmptyClipboard IN user32
    DECLARE INTEGER SetClipboardData IN user32 INTEGER,INTEGER
    DECLARE INTEGER LoadImage IN WIN32API INTEGER,string,INTEGER,INTEGER,INTEGER,INTEGER
    DECLARE INTEGER GetClipboardData IN user32 INTEGER
    DECLARE INTEGER GdipCreateBitmapFromHBITMAP in GdiPlus.dll INTEGER, INTEGER, INTEGER @
    DECLARE INTEGER GdipSaveImageToFile in GdiPlus.dll INTEGER,String,String @,String @
    DECLARE Long GdipCreateHBITMAPFromBitmap IN GDIPLUS.DLL Long nativeImage, Long @, Long
    DECLARE Long GdipCreateBitmapFromFile IN GDIPLUS.DLL String FileName, Long @nBitmap
    DECLARE Long CopyImage IN WIN32API Long hImage, Long, Long, Long , Long
    #DEFINE CF_BITMAP 2
    #DEFINE CF_DIB 8
    #DEFINE IMAGE_BITMAP 0
    #DEFINE LR_LOADFROMFILE 16
   
    *VFP应用程式算法群:12787940 行者孙:310727570

    *功能1:将图形文件保存到剪切板
    imagefile="F:\...\...\...\文件名.bmp"
    hBitmap=LoadImage(0,imagefile,IMAGE_BITMAP,0,0,LR_LOADFROMFILE)
    OpenClipboard (0)
    EmptyClipboard()
    SetClipboardData (CF_BITMAP,hBitmap)
    CloseClipboard()

    *功能2:将剪切板图形保存到本地
   
    OpenClipboard(0)
    hBitmap = GetClipboardData(CF_BITMAP)
    hDib = GetClipboardData(CF_DIB)
    CloseClipboard()
    ubitmap=0
    GdipCreateBitmapFromHBITMAP(hBitmap,2,@ubitmap)
    lcOutputFile=STRCONV("E:\...\...\...\...\test.bmp"+CHR(0),5)
    qEncoderClsID_BMP='0h00F47C55041AD3119A730000F81EF32E'  &&网上下载的不带引号,VFP中显示“语法错误”
    GdipSaveImageToFile(ubitmap,"\test.bmp",qEncoderClsID_BMP,null)
    OpenClipboard(0)
    EmptyClipboard()
    CloseClipboard()

功能1实现了(但这一步对我无帮助,列在此供参考),功能2不行,既无出错信息,也没有生成文件。
恳请这方面专家给看看问题在哪里?

也许有人要问:为何不手动做,费这劲干么?因为我是通过编程从excel中批量导入数据,其他类型的数据(包括备注型 )已经成功,唯有照片数据,做到了复制到剪贴板上这一步,如果能从剪贴板上保存成本地bmp文件,下一步用APPEND GENERAL 命令就可达到目标。

[ 本帖最后由 iamhyf 于 2010-1-21 10:03 编辑 ]
2010-01-21 09:01
phenloo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-7-7
得分:0 
从excel复制的图向时emf格式,这个目前搜遍了百度谷歌还没有相关资料。有C#的代码,看不懂
2011-01-22 16:30
fnlsgjb
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-1-10
得分:0 
回复 4楼 iamhyf
这段代码不错,我测试过了,可以将word中的照片保存到磁盘中,只不过这句:qEncoderClsID_BMP='0h00F47C55041AD3119A730000F81EF32E'  不带引号就行了,
lcOutputFile=STRCONV("E:\...\...\...\...\test.bmp"+CHR(0),5) 的路径不对,改为:lcOutputFile=STRCONV("E:\Pic\test.jpg"+CHR(0),5),这句:lcOutputFile=Strconv("E:\Pic\test.jpg"+Chr(0),5),
这几句改后可以做到。


[ 本帖最后由 fnlsgjb 于 2014-1-6 22:09 编辑 ]
2014-01-06 22:05
shschy
Rank: 1
等 级:新手上路
帖 子:33
专家分:5
注 册:2022-3-13
得分:0 
测试时提示
2022-03-27 11:08
shschy
Rank: 1
等 级:新手上路
帖 子:33
专家分:5
注 册:2022-3-13
得分:0 
2022-03-27 11:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-296084-1-1.html




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

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