GDI+ 加載PNG圖片


 

#include <GdiPlus.h>
#pragma comment(lib, "GdiPlus.lib")
using namespace Gdiplus;

 

 

class mygdiplus
{
  GdiplusStartupInput gdiplusStartupInput;
  ULONG_PTR gdiplusToken;
public:
  mygdiplus()
  {
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
  }
  ~mygdiplus()
  {
    GdiplusShutdown(gdiplusToken);
  }
};


Rect rect(20, 20, 326, 326);
Graphics grpx(hdc);
Image* pImage = new Image(TEXT("a1.png"));
//Image* pImage = Gdiplus::Image::FromFile(TEXT("a1.png"));
grpx.DrawImage(pImage,rect);
case WM_PAINT:
    {
        hdc = BeginPaint(hWnd, &ps);

        /*Image image(L"a1.png");
        Graphics graphics(hdc);
        graphics.DrawImage(&image, 0, 0);*/

        //GdiplusStartupInput gdiplusStartupInput;
        //ULONG_PTR gdiplusToken;
        //GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

        Rect rect(20, 20, 326, 326);
        Graphics grpx(hdc);
        Image* pImage = new Image(TEXT("a1.png"));
        //Image* pImage = Gdiplus::Image::FromFile(TEXT("a1.png"));
        grpx.DrawImage(pImage,rect);

        delete pImage;
        
        // shut down - only once per process
        //GdiplusShutdown(gdiplusToken);


        EndPaint(hWnd, &ps);
        return 0;


 

 

 

 

 

 

 

 

 

 

 

#include <windows.h>
#include <GdiPlus.h>
#pragma comment(lib, "GdiPlus.lib")
using namespace Gdiplus;






class mygdiplus
{
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR   gdiplusToken;
public:
    mygdiplus()
    {
        GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
    }
    ~mygdiplus()
    {
        GdiplusShutdown(gdiplusToken);
    }
};








LRESULT CALLBACK MyWinMain(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);//回調函數(消息的)



class cWNDCLASSEX
{
public:
    cWNDCLASSEX(HINSTANCE h, int n) :hInstance(h), nCmdShow(n) {};
    //WNDCLASSEX wndclass;
    void cj();
private:
    int nCmdShow;
    HINSTANCE hInstance;
    //WNDCLASSEX wndclass;

};

void cWNDCLASSEX::cj()
{
    WNDCLASSEX wndclass;
    HBRUSH hBrush = ::CreateSolidBrush(RGB(236, 236, 236));
    HWND hWnd;
    wndclass.cbClsExtra = 0;
    wndclass.cbSize = sizeof(wndclass);
    wndclass.cbWndExtra = 0;
    wndclass.hbrBackground = hBrush;
    wndclass.hCursor = 0;
    wndclass.hIcon = 0;
    wndclass.hIconSm = 0;
    wndclass.lpfnWndProc = MyWinMain;
    wndclass.lpszClassName = TEXT("Leo");   //注冊窗口時候要的名字,作為參數
    wndclass.lpszMenuName = 0;        //菜單名字
    wndclass.style = CS_HREDRAW | CS_VREDRAW ;
    wndclass.hInstance = hInstance;

    if (RegisterClassEx(&wndclass) == false)
    {
        //MessageBox(NULL, "注冊失敗", "提示", MB_OK);
        //return 0;
    }

    hWnd = CreateWindow(
        TEXT("Leo"), 
        TEXT("Small Test"), 
        WS_OVERLAPPEDWINDOW|WS_VSCROLL,
        0, 
        200, 
        500, 
        500, 
        NULL, 
        NULL,
        hInstance, 
        NULL);

    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
    MSG msg;
    while (::GetMessage(&msg, 0, 0, 0))
    {

        ::TranslateMessage(&msg);   //將得到的消息翻譯
        ::DispatchMessage(&msg);    //翻譯來的消息發送

    }

}


int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    cWNDCLASSEX a1(hInstance, nCmdShow);
    a1.cj();
    return 0;
}


LRESULT CALLBACK MyWinMain(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)//回調函數(消息的)
{
    //HBRUSH m_hbr = CreateSolidBrush(RGB(255, 0, 0));
    HDC hdc;    //設備描述表句柄
    PAINTSTRUCT ps;//繪制窗口
    //RECT rect;
    mygdiplus mygdiplusS;
    switch(uMsg)
    {

    case WM_PAINT:
    {
        hdc = BeginPaint(hWnd, &ps);

        /*Image image(L"a1.png");
        Graphics graphics(hdc);
        graphics.DrawImage(&image, 0, 0);*/

        //GdiplusStartupInput gdiplusStartupInput;
        //ULONG_PTR gdiplusToken;
        //GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

        Rect rect(20, 20, 326, 326);
        Graphics grpx(hdc);
        Image* pImage = new Image(TEXT("a1.png"));
        //Image* pImage = Gdiplus::Image::FromFile(TEXT("a1.png"));
        grpx.DrawImage(pImage,rect);

        delete pImage;
        
        // shut down - only once per process
        //GdiplusShutdown(gdiplusToken);


        EndPaint(hWnd, &ps);
        return 0;

    }
    case WM_CLOSE:          //自動退出

        ::PostQuitMessage(0);
        break;

    }

    return  DefWindowProc(hWnd, uMsg, wParam, lParam); //返回消息的默認處理
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM