Meh*_*dad 3 c++ png gdi image stretchdibits
(这与如何使用Win32/GDI加载PNG图像的问题有关(如果可能,没有GDI +)?)
大家好,
我想知道,鉴于你有一个PNG资源嵌入带有ID的二进制文件中IDB_PNG1
,并且LPDRAWITEMSTRUCT
要绘制(这意味着你有HDC
目标的矩形和矩形),你如何使用这个图像绘制到屏幕上StretchDIBits
?我曾经BitBlt
和TransparentBlt
以前StretchDIBits
一起工作,但似乎工作方式不同,LoadImage
似乎不适用于PNG.
谢谢!
(注意:我使用的语言是C++,但这并不太重要...... C,C#,Visual Basic等都没问题;我只是想弄清楚步骤,而不是确切的代码.)
我写了一篇博客文章(在显示带有C++的初始屏幕上),其中包含一个完整的代码示例,它从资源加载PNG并将其转换为HBITMAP(使用WIC).然后,您可以使用CreateCompatibleDC,SelectObject和BitBlt在目标HDC中显示它.
虽然我还没有尝试过,但是如果你将资源中的原始字节加载到内存中,你应该可以使用StretchDIBits直接显示PNG,并设置一个宽度,高度等的BITMAPINFOHEADER结构,如下所示.这个MSDN示例.
C#和VB.NET解决方案将完全不同,因为您可以使用System.Drawing(GDI +的包装器)或System.Windows.Media.Imaging(在WPF应用程序中)来处理图像加载和绘图.