c++ gdi图像数组

Posted

技术标签:

【中文标题】c++ gdi图像数组【英文标题】:c++ gdi image array 【发布时间】:2010-08-31 04:54:25 【问题描述】:

我正在尝试制作一组​​图像

Image something(L"something.png");

而不是那个

Image something[2];
something[0]=(L"something.png");

任何想法

【问题讨论】:

【参考方案1】:

通过指针使用Gdiplus图像和位图对象要容易得多。

考虑使用指针数组。如果您不想在完成后显式记住释放数组,则可以使用智能指针。在下面的代码示例中,我使用了 CAutoPtr。

#include <Windows.h>
#include <gdiplus.h>
#include <atlbase.h>    

    void HandleImages(HDC hdc)
        
      typedef CAutoPtr<Gdiplus::Image> GdiplusImagePtr; // could be declared using CAutoPtr<Gdiplus::Bitmap>
      GdiplusImagePtr something[2];
      Gdiplus::Graphics g(hdc);

      something[0].Attach(new Gdiplus::Bitmap(L"something.png"));
      something[1].Attach(new Gdiplus::Bitmap(L"otherthing.png"));


      for (int x = 0; x < ARRAYSIZE(something); x++)
      
          g.DrawImage(something[x], 50*x, 0);
      

      // CAutoPtr will call destructor for each item in something array
   

【讨论】:

以上是关于c++ gdi图像数组的主要内容,如果未能解决你的问题,请参考以下文章

C++ GDI+如何从资源中获取和加载图像?

C++ gdi::Bitmap 到内存中的 PNG 图像

C++ gdi::Bitmap 到内存中的 PNG 图像

如何从 C++ 中的 Base64 编码字符串在 GDI+ 中创建图像?

图像到字节数组失败“GDI+ 中发生一般错误。”

GDI+ DrawImage 在 C++ (Win32) 中比在 C# (WinForms) 中慢得多