您的位置:首页 > 其它

常用的GDI+ 函数使用例子

2012-02-19 15:05 197 查看
一、通过Gdi+加载和显示PNG,JPG等格式的图片

//直接加载外部的图像
Image* image = new Image(L"test.png");
//如果需要通过ID 来加载的话
BOOL CSmalltmpdemoDlg::ImageFromIDResource(UINT nID, LPCTSTR sTR, Image * & pImg)
{
    HINSTANCE hInst = AfxGetResourceHandle();
    HRSRC hRsrc = ::FindResource (hInst,MAKEINTRESOURCE(nID),sTR); // type
    if (!hRsrc)
        return FALSE;
    // load resource into memory
    DWORD len = SizeofResource(hInst, hRsrc);
    BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc);
    if (!lpRsrc)
        return FALSE;
    // Allocate global memory on which to create stream
    HGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, len);
    BYTE* pmem = (BYTE*)GlobalLock(m_hMem);
    memcpy(pmem,lpRsrc,len);
    IStream* pstm;
    CreateStreamOnHGlobal(m_hMem,FALSE,&pstm);
    // load from stream
    pImg=Gdiplus::Image::FromStream(pstm);
    // free/release stuff
    GlobalUnlock(m_hMem);
    pstm->Release();
    FreeResource(lpRsrc);
    return TRUE;
}
//调用方式
Image * pImage = NULL; 

ImageFromIDResource(IDR_PNG_NO_PIC, L"png", pImage); 

delete pImage; 

///////////////////////////////////////////////////////////////////////// 

 

Image * pImage = NULL; 

ImageFromIDResource(IDR_PNG_NO_PIC, L"jpg", pImage); 

delete pImage; 

////////////////////////////////////////////////////////////////////////// 

 

Image * pImage = NULL; 

ImageFromIDResource(IDR_PNG_NO_PIC, L"bitmap", pImage); 

delete pImage;


二、实现一个渐变的画刷

CClientDC dc(this);
  CRect rect;
  //获得当前客户区的大小
  GetClientRect(&rect);
  //创建Graphics对象
  Graphics graphics(dc);
  //创建渐变画刷
  LinearGradientBrush lgb(Point(0, 0), Point(rect.right, rect.bottom), Color
    ::Blue, Color::Green);
  //填充
  graphics.FillRectangle(&lgb, 0, 0, rect.right, rect.bottom);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: