有没有办法在不使用MFC的情况下在窗口上绘制PNG图像?

时间:2009-12-15 06:11:16

标签: winapi image png

我正在开发Windows API应用程序而不使用MFC。 我使用的是标准Windows库。

如何在窗口中绘制PNG图像?

帮我一些示例代码。

我尝试了一些可在互联网上使用的代码,但都使用的是MFC。

5 个答案:

答案 0 :(得分:6)

看看this StackOverflow question。它提供了几个可满足您需求的选项。

改编自MSDN

#include <windows.h>
#include <gdiplus.h>
#include <stdio.h>
using namespace Gdiplus;

void draw()
{
   // start up GDI+ -- only need to do this once per process at startup
   GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR gdiplusToken;
   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);


   Rect rect(20,20,50,50);
   Graphics grpx(dc);
   Image* image = new Image(L"SomePhoto.png");
   grpx.DrawImage(Img,rect);

   delete image;

   // shut down - only once per process
   GdiplusShutdown(gdiplusToken);
   return;
}

答案 1 :(得分:3)

您的选择是:GDI +,WIC(Windows Imaging Component)或libpng

答案 2 :(得分:2)

您可以使用GDI +。请参阅Loading and Displaying Bitmaps

答案 3 :(得分:1)

以下代码对我有用。它没有MFC,可以直接用于在窗口中绘制PNG图像。

    Gdiplus::Image image(L"C:\\Logo.png") ;

    Gdiplus::Graphics* graphics = Gdiplus::Graphics::FromHDC(GetDC(hWnd));

    RectF ImgRect(0,0,y3/10,y3/10) ;

    Gdiplus::Status result = graphics->DrawImage(&image, ImgRect);

感谢您的所有支持和快速回复来解决我的问题。

答案 4 :(得分:0)

如果你知道PNG'编码,你可以解码它。所以你可以用任何方式绘制PNG~