显示png图片代码:
CPaintDC dc(this);
image = Image::FromFile(L"1.png");
Graphics graphics(dc.GetSafeHdc());
graphics.DrawImage(image, 0, 0, 200, 200);父进程显示1.png后会启动一个子进程,子进程做一些工作会得到新的图片并试图把图片保存为1.png,然后父进程刷新显示。但这里有个问题,父进程第一次显示1.png后会一直占用它,子进程无法修改图片。怎么解除父进程对图片的占用呢?gdi+image
CPaintDC dc(this);
image = Image::FromFile(L"1.png");
Graphics graphics(dc.GetSafeHdc());
graphics.DrawImage(image, 0, 0, 200, 200);父进程显示1.png后会启动一个子进程,子进程做一些工作会得到新的图片并试图把图片保存为1.png,然后父进程刷新显示。但这里有个问题,父进程第一次显示1.png后会一直占用它,子进程无法修改图片。怎么解除父进程对图片的占用呢?gdi+image
delete image ;
image =null;
Bitmap* tPic= new Bitmap(L"dotLive.jpg");//锁定文件
Bitmap* Image = new Bitmap(tPic->GetWidth() ,tPic->GetHeight() ,tPic->GetPixelFormat());
Graphics g(Image);
g.DrawImage(tPic,0,0,m_nWidth,m_nHeight);//复制过来
delete tPic;//解锁以前打开的文件
/// … use the Image to access "dotLive.jpg" … 使用image访问”dotlive JPG。” ///
CLSID tiffClsid;
GetEncoderClsid(L"image/jpeg", &tiffClsid);//这个函数MSDN中有
Image->Save(L"dotLive.jpg" ,&tiffClsid);//保存
-------------------------是不是想这样
Graphics graphics(dc.GetSafeHdc());
graphics.DrawImage(&image, 0, 0, 200, 200);Image::FromFile这个会创建一个临时对象,但用完后不会马上释放的
或者
CPaintDC dc(this);
image = new Image(L"1.png");
Graphics graphics(dc.GetSafeHdc());
graphics.DrawImage(image, 0, 0, 200, 200);
delete image;