不是 就是一张图片上的预留位置写一些文字
图片是jpg或bmp格式的

解决方案 »

  1.   

    不是 就是一张图片上的预留位置写一些文字
    图片是jpg或bmp格式的
      

  2.   

    如果使用GDI来画图, 在dll里如何得到 Graphics mygraphics(*pDC);  的*pDC???
      

  3.   


    可以由调用该dll的应用 传递PDC或者HWND给该dll,然后就可以来做绘制了
      

  4.   


    可以由调用该dll的应用 传递PDC或者HWND给该dll,然后就可以来做绘制了

    主要是接口已经定义好了 ,不能传递PDC如何得到?
      

  5.   


    可以由调用该dll的应用 传递PDC或者HWND给该dll,然后就可以来做绘制了

    主要是接口已经定义好了 ,不能传递PDC如何得到?接口就算定义好了,也可以修改啊!
      

  6.   


    可以由调用该dll的应用 传递PDC或者HWND给该dll,然后就可以来做绘制了

    主要是接口已经定义好了 ,不能传递PDC如何得到?接口就算定义好了,也可以修改啊!
    接口是别人定的,不能改。
    Bitmap bmp(L"C:\\1.bmp");  Graphics mygraphics(&bmp); 
    SolidBrush brush( Color(100,0,0,255) );   
     
    FontFamily fontFamily(L"宋体");         //选择一种字体 Font font( &fontFamily, 1, FontStyleRegular,UnitInch );
     
    PointF pointF(5,5); mygraphics.DrawImage(&bmp,0,0);
    mygraphics.DrawString( L"Hello Word!", -1, &font, pointF, &brush ); bmp.Save(L"C:\\2.bmp",&Gdiplus::ImageFormatBMP, NULL);
    这段代码保存的图片咋是空的啊???
      

  7.   


    可以由调用该dll的应用 传递PDC或者HWND给该dll,然后就可以来做绘制了

    主要是接口已经定义好了 ,不能传递PDC如何得到?我使用了图片路径但是保存图片时,图片为空。代码在楼上
      

  8.   

    如果你能用vc9的话,有各类叫做,CAtlImage,此类可以载入多种格式的图片,一个load函数就能载入,然后还可以得到这个图片的dc,然后再在这个dc上DrawText、TextOut。然后Save即可,Save成各种格式的图片(png,bmp,jpg,gif,tif..);几大步:
    #include "AtlImage.h"CImage im;
    im.Load("xxx.bmp");
    HDC dc = im.getdc();
    DrawText(dc,"Hello",.....);
    im.save("newname.bmp");
    你考察一下是否要ReleaseDC。我忘记了。
      

  9.   

    我们也可以自己写。
    自己载入文件得到HBITMAP,然后画到一个虚拟dc(双缓冲办法)上,再写字,然后干掉虚拟dc,剩下那个做双缓冲时的HBITMAP。这个HBITMAP就是那张写了字的图。再想办法把这个HBITMAP存成文件即可。但是还是建议用CAtlImage,这都是微软大拿们写的类。比我们自己可靠性高啊
      

  10.   

    void   TextInBMPFile(char*strSrcFN,char*strDstFN,char*text,char*Atext,char *BText,char*CText,char*DText,char*EText,int   x,int   y) 

    PrintDebug_W(_SELF,__LINE__,L"TextInBMPFile 开始");
    FILE   *fp; //char* tExt=" A  B C D E";
    BITMAPFILEHEADER   bf; 
    BITMAPINFOHEADER   head; 
    // DWORD dwImgSize;  if((fp=fopen(strSrcFN, "rb "))==NULL) 

    MessageBoxA(NULL, "File   open   error ", "error ",MB_OK); 
    return; 

    fread(&bf,1,14,fp); 
    fseek(fp, sizeof(BITMAPFILEHEADER),0);  
    fread(&head,sizeof(BITMAPINFOHEADER),1,fp);
    //获取图像宽、高、每像素所占位数等信息  
    int bmpWidth = head.biWidth;  
    int bmpHeight = head.biHeight;  
    //biBitCount = head.biBitCount;  
    //定义变量,计算图像每行像素所占的字节数(必须是4的倍数)  
    int lineByte=bmpWidth * 2;
    //灰度图像有颜色表,且颜色表表项为256  
    //申请位图数据所需要的空间,读位图数据进内存  
    //pBmpBuf=new unsigned char[lineByte * bmpHeight];
    unsigned char *buf=new unsigned char[lineByte*bmpHeight];
    fread(buf,1,lineByte * bmpHeight,fp);  
    head.biHeight=head.biHeight+120;
    bf.bfSize=bf.bfSize+head.biWidth*120*2;
    fclose(fp);
    fp = fopen(strDstFN, "wb");
    if(!fp)
    return;
    fwrite(&bf,1,14,fp); 
    fwrite(&head, sizeof(BITMAPINFOHEADER),1, fp);
    byte temp[2]={0xFF,0xFF};
    for (int i=0;i<head.biWidth*120;i++)
    {
    fwrite(temp,2,1,fp);
    } fwrite(buf,1,lineByte * bmpHeight,fp);  
    ////////////////////////////////////////////////////
    fclose(fp);
    //////////////////////////////////
    //FILE   *fp; 
    //BITMAPFILEHEADER   bf; 
    LPBITMAPINFOHEADER   lpbi; 
    DWORD dwImgSize; 
    HDC MemDC; 
    HBITMAP   bitmap;  if((fp=fopen(strDstFN, "rb "))==NULL) 

    MessageBoxA(NULL, "File   open   error ", "error ",MB_OK); 
    return; 

    fread(&bf,1,14,fp); 
    dwImgSize=bf.bfSize-14; 
    lpbi=(LPBITMAPINFOHEADER)malloc(dwImgSize); 
    fread(lpbi,1,dwImgSize,fp); 
    fclose(fp); 
    MemDC=CreateCompatibleDC(NULL); 
    bitmap   =   CreateDIBitmap(GetDC(NULL),   //   handle   to   device   context     
    lpbi,   //   pointer   to   bitmap   size   and   format   data     
    CBM_INIT,   //   initialization   flag     
    (PBYTE)lpbi+40,   //   pointer   to   initialization   data     
    (BITMAPINFO*)lpbi,   //   pointer   to   bitmap   color-format   data     
    DIB_RGB_COLORS);   //   color-data   usage     
    if   (bitmap) 

    SelectObject(MemDC,bitmap); 
    SetBkMode(MemDC,TRANSPARENT); 
    SetTextColor(MemDC,RGB(255,0,0));
    TextOutA(MemDC,x,y,text,strlen(text)); 
    y=y+20;
    TextOutA(MemDC,x,y,Atext,strlen(Atext)); 
    y=y+20;
    TextOutA(MemDC,x,y,BText,strlen(BText)); 
    y=y+20;
    TextOutA(MemDC,x,y,CText,strlen(CText)); 
    y=y+20;
    TextOutA(MemDC,x,y,DText,strlen(DText)); 
    y=y+20;
    TextOutA(MemDC,x,y,EText,strlen(EText)); 
    GetDIBits(MemDC,bitmap,1,lpbi-> biHeight,(PBYTE)lpbi+40,(LPBITMAPINFO)lpbi,DIB_RGB_COLORS); 

    if((fp=fopen(strDstFN, "wb "))==NULL) 

    MessageBoxA(NULL, "File   open   error ", "error ",MB_OK); 
    return; 

    fwrite(&bf,1,14,fp); 
    fwrite(lpbi,1,dwImgSize,fp);
    fclose(fp); 
    DeleteDC(MemDC);
    delete [] buf;
    //DeleteObject(bitmap); 
    // DeleteObject(MemDC);