为何图片显示不出来??

忙碌的小毛驴 2014-02-08 10:53:22
在对话框中读取图片。
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);
}
...全文
96 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
忙碌的小毛驴 2014-02-11
  • 打赏
  • 举报
回复
问题出在了这里 SetDIBitsToDevice(pDC->GetSafeHdc(),0,0,bmpWidth, bmpHeight,0,0,0,bmpHeight, m_pBmpDataDes,(LPBITMAPINFO)&RGB32BITSBITMAPINFO,DIB_RGB_COLORS); } 将这个函数换成StretchDIBits函数就行了,有人知道为什么吗?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧