作者:一直都在囚禁 | 来源:互联网 | 2023-05-18 10:41
我用Windows2000+VC6.0的平台我现在要处理多付JPG图象,我自己定义了一个类用来生成Bitmap*对象.构造函数定义如下:MyPhoto::MyPhoto(CStringstri
我用Windows 2000+VC6.0的平台
我现在要处理多付JPG图象,我自己定义了一个类用来生成Bitmap*对象.构造函数定义如下:
MyPhoto::MyPhoto(CString stringOpenFileName)
{
fileName=stringOpenFileName;
if(fileName!="")
{
Bitmap Ori_photo(ToWChar(fileName.GetBuffer(fileName.GetLength())));
INT iWidth=Ori_photo.GetWidth();
INT iHeight=Ori_photo.GetHeight();
//photo和 iphoto都是MyPhoto的成员变量,类型为Bitmap *
photo=Ori_photo.Clone(0,0,iWidth,iHeight,PixelFormatDontCare);
iphoto=photo->Clone(0,0,iWidth,iHeight,PixelFormatDontCare);
}
}
可是当我处理第二张图象时,发现Ori_photo对象失效,它一直占用着内存.
请问该怎么办??
我是基于对话框的工程,是不是要发送一个消息来关闭它,我不知道怎么办!!!!
为什么我不能用
Bitmap mybitmap=new Bitmap("filename");
构造Bitmap 对象?
8 个解决方案
我经常使用gdi+,从来没有遇到问题,你的问题有点奇怪,估计错误在其它原因,
Bitmap *pmybitmap = new Bitmap("unicode_filename");
注意你的指针写法!!!
上面的问题不应该存在
我一用下面这种方式定义,编译就不然通过
Bitmap *pmybitmap = new Bitmap("unicode_filename");
我的平台是windows2000+VC6.0
是不是配置有问题??
我在StdAfx.h中加入如下申明:
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#endif
#include "Gdiplus.h"
#pragma comment(lib,"GdiPlus.lib")
using namespace Gdiplus;
是不是还要引入其他空间名?我以前在视图/文档结构中用得很顺手的,我想问题应该出在析够函数中,可能是对话框的管理方式的差异吧!
HELP ME!!!
我设置了一个临时工作文件:TEMPFILE(是待处理文件的副本)
现在的问题是:第一次打开TEMPFILE后,我即使删除了处理好的对象,但并没有释放对TEMPFILE的控制权,第二个文件的副本不能生成,导致new Myphoto(TEMPFILE)时出错,请大家帮忙来看看.
谢谢CADINFO:
让我对GDI+又回复了信心!
在APP中我是这样初始化:
GdiplusStartup(&gdiplusToken, &m_gdiplusStartupInput, NULL);
以下为关闭:
GdiplusShutdown(gdiplusToken);
是分别在前面加一个Q吗?
我在工程中加入QGdiplus.h后,编译出错:
e:\wanjie\三人组集成_1215\qgdiplus.h(26) : fatal error C1083: Cannot open include file: 'GdiplusMem.h': No such file or directory
MyPhoto.cpp
e:\wanjie\三人组集成_1215\qgdiplus.h(26) : fatal error C1083: Cannot open include file: 'GdiplusMem.h': No such file or directory
Error executing cl.exe.
第26行代码为: #include
可是,我的GdiplusMem.h文件已经包含在当前目录下
扑通,扑通!我扑通了