*Bitmap 转换为 *Image
来源:互联网 发布:图像识别软件价格 编辑:程序博客网 时间:2024/05/21 07:46
Bitmap 是Image的子类
因此,Bitmap类指针可以转换为Image类指针
下面的转换是没有问题的
Bitmap bmp(souceRectf.Width,souceRectf.Height); Image*pImg=(Image*)&bmp;
但是,如果pImg是全局变量,也即pImg在上述函数体范围外继续使用时,便会出现错误。
原因是: bmp是局部变量,因此出了此函数作用范围后,便会被系统撤销,而这时如果再调用pImg便会出现读内存错误。
那如何解决呢?如何才能使得出来函数范围后,变量还可继续使用?
那当然是在堆上分配变量
方法一: 直接NEW Bitmap
Bitmap *pImg=new Bitmap(souceRectf.Width,souceRectf.Height); Graphics graphics(pImg); graphics.DrawImage(m_pImage,desRectf,souceRectf.X,souceRectf.Y,souceRectf.Width,souceRectf.Height,UnitPixel,NULL); if (m_showImageDlg.pImg!=NULL) { delete m_showImageDlg.pImg; } m_showImageDlg.pImg=pImg; //m_showImageDlg.pImg 是Image*类型 m_showImageDlg.Invalidate(FALSE);
方法二:调用GetThumbnailImage()函数
此函数在堆上分配缩略图空间,并返回空间地址(Image* 类型)
Bitmap bmp(souceRectf.Width,souceRectf.Height); Graphics graphics(&bmp); graphics.DrawImage(m_pImage,desRectf,souceRectf.X,souceRectf.Y,souceRectf.Width,souceRectf.Height,UnitPixel,NULL); Image *pImg=bmp.GetThumbnailImage(souceRectf.Width,souceRectf.Height,NULL,NULL); // 由Bitmap 转换为Image 的方法 if (m_showImageDlg.pImg!=NULL) { delete m_showImageDlg.pImg; } m_showImageDlg.pImg=pImg; //m_showImageDlg.pImg 是Image*类型 m_showImageDlg.Invalidate(FALSE);
- *Bitmap 转换为 *Image
- Bitmap转换为Drawable
- View转换为Bitmap
- View转换为Bitmap
- View转换为bitmap
- view转换为image
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- Byte[]、Image、Bitmap 之间的相互转换
- linux下普通用户如何使用80端口启动程序
- struts2使用ajax的几个方式
- 固定工资的缺点
- 正则表达式-基本款
- PHP命名规范
- *Bitmap 转换为 *Image
- 华为路由器防火墙配置命令
- 拓扑排序 C实现
- c#读取app.config
- 如何用JDeveloper为Weblogic server安装ADF运行时库
- ADO.NET分页封装[支持多表连接查询分页]-代码实现-关键代码下载
- group by下同一列字符串链接函数及sql(sql server 2000下)[转]
- 堆表和索引组织表区别
- 友元函数