常用的GDI+ 函数使用例子 greenluma • 2022-7-22 • 随笔 • 阅读 14 一、通过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); 欢迎分享,转载请注明来源:内存溢出原文地址: https://outofmemory.cn/zaji/2091721.html 函数 例子 赞 (0) 打赏 微信扫一扫 支付宝扫一扫 greenluma 一级用户组 0 0 生成海报 gcc4.0的cc1去哪了? 上一篇 2022-07-22 谈移动互联网开发的数据分析和决策思路 下一篇 2022-07-22 发表评论 请登录后评论... 登录后才能评论 提交 评论列表(0条)
评论列表(0条)