Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 生成BMP图像,但显示为反转_C++_Image_Driver_Printers - Fatal编程技术网

C++ 生成BMP图像,但显示为反转

C++ 生成BMP图像,但显示为反转,c++,image,driver,printers,C++,Image,Driver,Printers,我已经通过winddk生成了bitmap.dll 选择“打印到文件驱动程序”手动添加为打印机驱动程序 使用这个,我使用文件中的“打印”命令创建文档的图像 我能够创建图像并查看它,但问题是我得到了反转(镜像)图像 有人能解决这个问题吗?由于我在注释(以正确生成标题)时遇到问题,这几行。与设备无关的位图被记录为在内存中布局,底线位于缓冲区的开头。这是一个笛卡尔坐标系的实验,由OS/2的设计者在开发Windows3的同时与微软合作 有两种可能的修复方法: 将缓冲区倒置生成 许多采用BITMAPINFO

我已经通过winddk生成了bitmap.dll

选择“打印到文件驱动程序”手动添加为打印机驱动程序

使用这个,我使用文件中的“打印”命令创建文档的图像

我能够创建图像并查看它,但问题是我得到了反转(镜像)图像


有人能解决这个问题吗?由于我在注释(以正确生成标题)时遇到问题,这几行。

与设备无关的位图被记录为在内存中布局,底线位于缓冲区的开头。这是一个笛卡尔坐标系的实验,由OS/2的设计者在开发Windows3的同时与微软合作

有两种可能的修复方法:

  • 将缓冲区倒置生成
  • 许多采用BITMAPINFO的Windows API将负biHeight值视为自顶向下的DIB

  • 是的,我这样做了,但通过biHeight的负值,图像标题会被修改,因此图像无法加载到我的应用程序中。您需要解释修改后的图像标题如何抑制加载。您正在尝试将其保存到磁盘吗?我认为那是不正确的。如果要将BMP持久化到磁盘,它必须是自底向上的。
    cScans = pOemPDEV->bmInfoHeader.biHeight;
    // Flip the biHeight member so that it denotes top-down bitmap 
    pOemPDEV->bmInfoHeader.biHeight = cScans * -1;