【问题标题】:BMP image generated But displayed inverted生成 BMP 图像但显示倒置
【发布时间】:2011-01-12 12:57:13
【问题描述】:

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

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

使用它,我使用文件中的打印命令创建文档的图像。

我可以创建图像并查看它,但问题是我得到了倒置(镜像)图像。

cScans = pOemPDEV->bmInfoHeader.biHeight;
// Flip the biHeight member so that it denotes top-down bitmap 
pOemPDEV->bmInfoHeader.biHeight = cScans * -1;

有人可以解决此代码吗?当我评论(以正确生成标题)这行时遇到问题。

【问题讨论】:

    标签: c++ image driver printers


    【解决方案1】:

    设备独立位图被记录为在内存中布局,底线位于缓冲区的开头。它是在开发 Windows 3 的同时与 Microsoft 合作的 OS/2 的设计者进行的笛卡尔坐标实验。

    有两种可能的修复方法:

    1. 倒置生成缓冲区。
    2. 许多采用 BITMAPINFO 的 Windows API 将负 biHeight 值视为自上而下的 DIB。

    【讨论】:

    • 是的,我这样做了,但是传递了 biHeight 的负值,图像标头被修改,因此图像无法在我的应用程序中加载。
    • 您需要解释修改后的图像标题如何抑制加载。您是否尝试将其保存到磁盘反转?我不认为那是有效的。如果您要将 BMP 持久化到磁盘,它必须是自下而上的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 2016-12-14
    相关资源
    最近更新 更多