一个第三方的程序,通过代码已经将EMF类型的图像,复制到粘贴板,怎样将这个图像从粘贴板里面,保持到Tif文件?
用柯达控件不好用,柯达控件好像不支持EMF类型的图像,然而,粘贴到画图确没有问题,苦死我了,大家帮忙啊!!!

解决方案 »

  1.   

    找找imageio.dll看看
    下面是说明ImageIo.dll 
    本动态连接库是为了解决VB用户不能使用ImageLoad.dll动态连接库文件而编写的。它可以作为一个桥梁,使VB用户能够使用ImageLoad.dll。但它并不是对ImageLoad.dll的简单转化,而是添加了诸多代码,使其用起来更加简单、方便。它可以帮助用户完成 Bmp,Gif,Jpg 等多种图象文件的数据的读取和存盘工作。 
    制作者∶Xing 
    编程环境∶VC6.0 
    日期∶1999,12,20 
    常量∶ 
    1∶文件格式 
    Const IMAGETYPE_NONE = 0 '未知格式 
    Const IMAGETYPE_BMP = 1 'bmp 文件格式 
    Const IMAGETYPE_GIF = 2 'gif 文件格式 
    Const IMAGETYPE_PCX = 3 'pcx 文件格式 
    Const IMAGETYPE_TGA = 4 'tga 文件格式 
    Const IMAGETYPE_JPG = 5 'jpg 文件格式 
    Const IMAGETYPE_TIF = 6 'tif 文件格式 
    Const IMAGETYPE_FIRSTTYPE = IMAGETYPE_BMP '第一个文件格式 (bmp) = 1 
    Const IMAGETYPE_LASTTYPE = IMAGETYPE_TIF '最后一个文件格式 (tif) = 6 
    函数∶ 
    GetImageType 
    VB∶ 
    Private Declare Function GetImageType Lib "ImageIo.dll" (lpsFilename As String) As Long 
    VC∶ 
    __API int GetImageType(LPTSTR & pszFilename); 
    说 明∶ 
    获取图形文件类型 
    返回值∶ 
    文件类型 0--6,0 表示出错或未知文件类型 
    参数∶ 
    lpsFilename String 文件名 
    ImageLoad 
    VB∶ 
    Declare Function ImageLoad Lib "ImageIo.dll" (lpsFilename As String, ByVal hDC As Long, ByVal nX As Long, ByVal nY As Long) As Long 
    VC∶ 
    _API HGLOBAL ImageLoad( LPTSTR & pszFilename,HDC hDC, int nX, int nY); 
    说明∶ 
    装载一个图象文件,并必要时输出到指定的DC 
    返回∶ 
    返回指向装有图象文件数据的一个缓冲区的指针。不管你打开任何文件,装载到缓冲区的数据都已经是转换为DIB格式,也就是说和BMP文件一样。在不在使用该缓冲区的时候,应该用API函数GlobalFree或者本动态连接库提供的KillImage函数释放掉。 
    参数∶ 
    KillImage: 
    VB∶ 
    Declare Function KillImage Lib "ImageIo.dll" (ByVal hDib As Long) As Long 
    VC∶ 
    __API HGLOBAL KillImage(HGLOBAL hDib); 
    说明∶ 
    本函数与API函数GlobalFree在其功能上完全一样,当然可以改用GlobalFree 。VC代码如下∶ 
    HGLOBAL CImageIoApp::KillImage(HGLOBAL hDib) 
    {
    return(GlobalFree(hDib));
    }
    注∶如果成功返回0,否则返回hDib。 
    ImageDraw:
    VB∶
    Declare Function ImageDraw Lib "ImageIo.dll" (ByVal hDib As Long, ByVal hDC As Long, ByVal nX As Long, ByVal nY As Long) As Long
    VC∶
    __API BOOL ImageDraw(HGLOBAL hDib,HDC hDC, int nX, int nY );
    说明∶
    将图象输出到指定DC。
    返回值∶
    成功返回1,否则返回0。
    参数∶
    hDib 一个指向缓冲区的指针。该缓冲区中装有DIB位图数据。可以用LoadImage函数获取它。也可以自己创建。 
    hDC 需要绘制图象的设备常场景句柄
    nX,nY 设备场景中被绘制图象的左上角的坐标。 
    GetInfo:
    VB:
    Declare Function GetInfo Lib "ImageIo.dll" (ByVal hDib As Long, BIH As BITMAPINFOHEADER) As Long
    VC:
    __API BOOL GetInfo(HGLOBAL hDib,BITMAPINFOHEADER & BIH);
    说明∶
    本来是想用GetImageInfo作为函数名,但VC中用此名发生一些冲突,改用了GetInfo。此函数用于获取DIB文件中的BITMAPINFOHEADER结构信息。
    返回值∶
    成功返回1,失败返回0。 
    参数∶
    hDib 一个指向缓冲区的指针。该缓冲区中装有DIB位图数据。
    BIH 一个准备装载信息的BITMAPINFOHEADER结构。传递前没有必要设置其biSize(结构长度)成员变量。 __API BOOL ImageSave(LPTSTR & pszFilename,HGLOBAL hDib,int nType,int nQuality); 
      

  2.   

    以二进制取出直接存成TIF文件成不成?