忙碌的小毛驴 2014年02月08日
为何图片显示不出来??
在对话框中读取图片。
void CModifyDlg::OnBnClickedModify()
{
// TODO: 在此添加控件通知处理程序代码
CDC *pDC = GetDC();
long* m_pBmpDataSrc;
long* m_pBmpDataDes;
long* p_tmp;
BITMAPINFO *m_pbmpinfo,m_bmp;

HBITMAP hbmp=(HBITMAP)LoadImage(::AfxGetResourceHandle(),"D:\\shufa.bmp",
IMAGE_BITMAP,0, 0,LR_DEFAULTCOLOR|LR_LOADFROMFILE);
m_bmp.bmiHeader.biSize=sizeof(m_bmp.bmiHeader);
m_bmp.bmiHeader.biBitCount=0;

int bmpWidth;
int bmpHeight;
GetDIBits(pDC->GetSafeHdc(),hbmp,0,1,NULL,&m_bmp,DIB_RGB_COLORS);
bmpWidth=m_bmp.bmiHeader.biWidth;
bmpHeight=m_bmp.bmiHeader.biHeight;

p_tmp=(long*)malloc(bmpWidth*bmpHeight*m_bmp.bmiHeader.biBitCount+sizeof(BITMAPINFO));
m_pBmpDataDes=(long*)malloc(bmpWidth*bmpHeight*m_bmp.bmiHeader.biBitCount);
m_pbmpinfo=(BITMAPINFO*)p_tmp;
m_pBmpDataSrc=p_tmp+sizeof(BITMAPINFO);//m_pBmpDataSrc因为是真彩色图,所以已经指向了数据区
memcpy(p_tmp,(const void*)&m_bmp,sizeof(BITMAPINFOHEADER));
GetDIBits(pDC->GetSafeHdc(),hbmp,0,m_bmp.bmiHeader.biHeight,m_pBmpDataSrc,
m_pbmpinfo,DIB_RGB_COLORS);

BITMAPINFOHEADER RGB32BITSBITMAPINFO=
{sizeof(BITMAPINFOHEADER),m_bmp.bmiHeader.biWidth,m_bmp.bmiHeader.biHeight,
1,32,BI_RGB,0,0,0,0};
SetDIBitsToDevice(pDC->GetSafeHdc(),0,0,bmpWidth,
bmpHeight,0,0,0,bmpHeight,
m_pBmpDataDes,(LPBITMAPINFO)&RGB32BITSBITMAPINFO,DIB_RGB_COLORS);
}
...全文
60 点赞 收藏 1
写回复
1 条回复

还没有回复,快来抢沙发~

发动态
发帖子
VC/MFC
创建于2007-09-28

7872

社区成员

42.1w+

社区内容

VC/MFC相关问题讨论
社区公告
暂无公告