gao shou zhi dian xiao di bu sheng ganji
解决方案 »
- 如何设置字号
- 关于CString::GetAt()在VS2010下的问题
- #include "lxDialog.h" #include "lxDialog.cpp"控件大小随对话框改变
- 扫描进程虚拟内存数据区域的问题
- 求教关于用VC开发电子邮件接收端问题(支持有分)
- 如何在GUI程序中监控自己创建的Console窗口的Close Button消息?高手进
- SID生成的程序界面每次运行的位置都是不一样的,如何让他一运行就居中显示
- 关于Ctreectrl(树控件使用)疑问!
- 求助:VC怎样让系统时间无法更改
- 一个关于在IDL文件中union结构体的问题,真是搞不懂,为什么微软可以我不可以!
- ((CWnd*)GetDlgItem(IDC_PRO))->ShowWindow(TRUE)中的ShowWindow(TRUE)什么意思啊?
- 急求在VC++中显示Jpeg 2000格式图片的方法,最好付代码,谢谢
HBITMAP hbmp= (HBITMAP)::LoadImage( NULL,strPathBmp,IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); BITMAP bitmap;
GetObject(hbmp,sizeof(BITMAP),&bitmap);
Renderer::BitmapI *pMyBmp=Renderer::CreateBitmap(bitmap.bmWidth,bitmap.bmHeight);/**
*得到为图数据到lpBmpData
*/
int nBytesPix=bitmap.bmBitsPixel/8;
int nBytesPixDest=4;
int nCount=bitmap.bmHeight*bitmap.bmWidth*nBytesPix;
BYTE *src=new BYTE [nCount];
int n=GetBitmapBits(hbmp, nCount,src);
#include "atlimage.h"
/**
* 得到一图象数据的位图像素矩阵到ppBitmapBits,成功则返回true,否则返回false
* @param filename[in]:文件名 可以是bmp,emf,png,jpg,tiff图象格式
* @ppBitmapBits [out]:输出参数 位图矩阵
* 调用示例:
* void * pbmpBits = NULL;
* GetBitmapBits( "c:\1.bmp",&pbmpBits )
*/
bool GetBitmapBits(char *filename,void ** ppBitmapBits )
{
/**
* 使用CImage类装载图像, 并且转换为位图
*/
CImage img;
HRESULT hr = img.Load( filename );
if( FAILED( hr ) )
{
return false ;
} /**
* 确定目标位图的尺寸
*/
int width = img.GetWidth();
int height = img.GetHeight(); /**
* 创建内存DC
*/
HDC hdcMem = ::CreateCompatibleDC( NULL ); /**
* 使用DIBSection装载位图
*/
BITMAPINFO * info = (BITMAPINFO *)malloc( sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256 );
memset(info, 0, sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256 );
info->bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
info->bmiHeader.biWidth = width;
info->bmiHeader.biHeight = height;
info->bmiHeader.biPlanes = 1;
info->bmiHeader.biBitCount = 32;
info->bmiHeader.biCompression = BI_RGB;
info->bmiHeader.biClrUsed = 0;
info->bmiHeader.biClrImportant = 0; HBITMAP hbmp = CreateDIBSection(
hdcMem,
info,
DIB_RGB_COLORS,
ppBitmapBits,
NULL,
0); free(info);
if(!hbmp)
{
DeleteDC( hdcMem );
return NULL;
}
SelectObject( hdcMem, hbmp ); /**
* 将CImage类装载的图像内容绘制在hdc上
*/
img.Draw(
hdcMem,
0,
0,
width,
height ); //DeleteObject( hbmp );
DeleteDC( hdcMem );
return true ;
}