求用GDI+Image *image加载一张Png图片

mirroatl171 2013-01-12 10:51:01
111111111111111111111111111111
...全文
518 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mirroatl171 2013-01-15
  • 打赏
  • 举报
回复
Image是通用的图片类??????? 不是CImage是吗 Image不是GDI+的类吗??
引用 6 楼 redui 的回复:
Image是通用的图片类,提供只读功能,Bitmap是其派生类,提供了更完整的加载和编辑功能,也就是说,如果你要编辑图片,就用Bitmap加载。用Bitmap加载背景类,关联到Graphics上,然后用第二个Bitmap加载新的PNG图片,用混合或复制模式贴到Graphics上,图片2就混合到图片1上了。然后你可以把图片1存盘,就是新的图片。
ZouXuanXuan456 2013-01-14
  • 打赏
  • 举报
回复
////////////////////////////////////////////////////////////////////////////////////////// USES_CONVERSION; Image* _pImage=Image::FromFile(A2W("prop.png")); //透明度由PNG图片的Alpha通道决定 //如果加上WS_EX_TRANSPARENT属性,则鼠标会穿透此窗体 ModifyStyleEx(0, WS_EX_LAYERED/*|WS_EX_TRANSPARENT*/); CDC *pDCDst=this->GetDC(); CDC dcSrc; dcSrc.CreateCompatibleDC(pDCDst); CBitmap bmp; bmp.CreateCompatibleBitmap(pDCDst,PENPROP_WIDTH,PENPROP_HEIGHT); dcSrc.SelectObject(&bmp); //用GDI+显示PNG图片 Graphics _Graphics(dcSrc.m_hDC); _Graphics.DrawImage(_pImage,0,0,PENPROP_WIDTH,PENPROP_HEIGHT); BLENDFUNCTION _Blend; _Blend.BlendOp=0; _Blend.BlendFlags=0; _Blend.AlphaFormat=1; _Blend.SourceConstantAlpha=255; //此时,鼠标会穿透窗体中Alpha值为0的区域 UpdateLayeredWindow(pDCDst,&CPoint(0,0),&CSize(PENPROP_WIDTH,PENPROP_HEIGHT), &dcSrc,&CPoint(0,0),0,&_Blend,ULW_ALPHA); bmp.DeleteObject(); dcSrc.DeleteDC(); _Graphics.ReleaseHDC(dcSrc.m_hDC); this->ReleaseDC(pDCDst); //线宽对话框 m_dlgLineWidth = new CDlgLineWidth; m_dlgLineWidth->Create(CDlgLineWidth::IDD,NULL); m_dlgLineWidth->ShowWindow(SW_HIDE);
萧狼 2013-01-14
  • 打赏
  • 举报
回复
PNG估计有做透明等处理,需要进一步处理,比如透明等处理
redui 2013-01-14
  • 打赏
  • 举报
回复
Image是通用的图片类,提供只读功能,Bitmap是其派生类,提供了更完整的加载和编辑功能,也就是说,如果你要编辑图片,就用Bitmap加载。用Bitmap加载背景类,关联到Graphics上,然后用第二个Bitmap加载新的PNG图片,用混合或复制模式贴到Graphics上,图片2就混合到图片1上了。然后你可以把图片1存盘,就是新的图片。
  • 打赏
  • 举报
回复
你是给背景图加还是给按钮或者其他控件呢?如果是背景就无所谓哪一种了。
  • 打赏
  • 举报
回复
最好的方法还是用cximage+png这个方法来实现呀!
尘中远 2013-01-13
  • 打赏
  • 举报
回复
http://blog.csdn.net/czyt1988/article/details/7965066 GDI+和CImage类都有
mirroatl172 2013-01-13
  • 打赏
  • 举报
回复
按你的方法,我png加载到一张背景是png图片上,png图片的效果都没了。。。。
引用 1 楼 CometNet 的回复:
C/C++ code ? 123456789 #include <gdiplus.h> using namespace Gdiplus; #pragma comment(lib,"GdiPlus.lib") //初始化GDIPlus ULONG_PTR gdiplusToken; GdiplusStartupInput gdiplusStartupInput; Gdiplu……
邓学彬 2013-01-12
  • 打赏
  • 举报
回复
#include <gdiplus.h>
using namespace Gdiplus; 
#pragma comment(lib,"GdiPlus.lib")
//初始化GDIPlus
ULONG_PTR gdiplusToken;
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
//加载图片
Image* pImage=Gdiplus::Image::FromFile(L"C:\\abcd.png");
参考: http://msdn.microsoft.com/zh-cn/library/xs6ftd89(v=vs.80).aspx

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧