gpt4 book ai didi

c++ - 如何使用 LoadImage 和 StretchDIBits 绘制 PNG 图像?

转载 作者:太空狗 更新时间:2023-10-29 19:54:50 26 4
gpt4 key购买 nike

(这与 How would I load a PNG image using Win32/GDI (no GDI+ if possible)? 上的问题有关。)

大家好

我想知道,假设您有一个嵌入 ID IDB_PNG1 的二进制文件中的 PNG 资源,以及一个要绘制到其中的 LPDRAWITEMSTRUCT(这意味着您有HDC 和目标矩形),如何使用 StretchDIBits 将该图像绘制到屏幕上?我之前使用过 BitBltTransparentBlt,但是 StretchDIBits 似乎工作方式不同,而 LoadImage 没有似乎适用于 PNG。

谢谢!

(注意:我输入的语言是 C++,但这不太重要...C、C#、Visual Basic 等都可以;我只是想弄清楚步骤,而不是需要的确切代码.)

最佳答案

我写了一个blog post (在使用 C++ 显示初始屏幕时)包含完整的代码示例,该示例从资源加载 PNG 并将其转换为 HBITMAP(使用 WIC )。然后,您可以使用 CreateCompatibleDC、SelectObject 和 BitBlt 将其显示在目标 HDC 中。

虽然我从未尝试过,但如果您将原始字节从资源加载到内存中,并设置具有宽度、高度等的 BITMAPINFOHEADER 结构,您应该能够使用 StretchDIBits 直接显示 PNG。如本 MSDN sample 所示.

C# 和 VB.NET 解决方案会有很大不同,因为您可以使用 System.Drawing(GDI+ 的包装器)或 System.Windows.Media.Imaging(在 WPF 应用程序中)来处理图像加载和绘制。

关于c++ - 如何使用 LoadImage 和 StretchDIBits 绘制 PNG 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4568057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com