none
调用Windows API实现图片打印问题? RRS feed

  • 问题

  • 因项目开发需要,现需要用程序控制激光打印机的打印行为。而厂商没有提供二次开发库,现通过windows 打印API和GDI来实现。通过打印机名获得该设备的DC后,设置映射模式为:SetMapMode(MM_LOENGLISH); 然后通过SetDIBitsToDevice,打印图片:
      SetDIBitsToDevice(DC, //打印机DC
      GetBeginPositionX(), //打印起始位置:X,单位0.01英寸;
    GetBeginPositionY(), //打印起始位置:Y ,单位0.01英寸;
    lpBMP->bmiHeader.biWidth, //图片宽度:通过图片头信息获得
    lpBMP->bmiHeader.biHeight ,
    0,
    0,
    0,
    lpBMP->bmiHeader.biHeight,
    lpv_ptr_bmp_src,
    lpBMP, 
      DIB_RGB_COLORS
    );


      现在打印的结果是:打印的图片很小,和在windows下直接打印的大小差了很多,打印机的打印分辨率为:2400*600 DPI,该如何调整呢?lpBMP->bmiHeader.biWidth、lpBMP->bmiHeader.biHeight这两个值是从BMP文件头信息中直接获得的数据,没有经过处理。问题在哪里?
     
     
           
    2011年2月22日 1:17

答案