PersonalCorpus 版 (精华区)

发信人: hjt (浪子小猴◎工作狂◎这次,我不会放弃), 信区: VisualC
标  题: 显示bmp图像
发信站: 哈工大紫丁香 (2002年12月16日19:33:59 星期一), 站内信件

这个问题最近老有人问,就写这点吧,其他的如DIB图象的显示,jpg什么的还是
自己看看书,或者以后再总结吧

1,将bmp图象import到资源中,在OnDraw中加入:
    
    CBitmap bitmap;
    BITMAP bm;
    bitmap.LoadBitmap(IDB_BITMAP1);
    bitmap.GetBitmap(&bm);
    CDC dcMem;
    dcMem.CreateCompatibleDC(pDC);
    dcMem.SelectObject(&bitmap);
    int w,h;
    w = bm.bmWidth;
    h = bm.bmHeight;
    pDC->BitBlt(0,0,w,h,&dcMem,0,0,SRCCOPY);
    pDC->StretchBlt(0,h+10,w*2,h*2,&dcMem,0,0,w,h,SRCCOPY);


2,手动打开一幅图像:
OnFileOpen()
{
    char szFileFilter[]="BMP File(*.BMP)|*.BMP|";
    CString strBmpname;
    CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);
    if(IDOK==dlg.DoModal())
    {
        strBmpname.Format("%s",dlg.GetPathName());
        Showpicture(strBmpname);
    }
}
Showpicture(CString strbmpname)
{
    if(State==0)
    {
        HBITMAP 
hBitmap=(HBITMAP)LoadImage(NULL,_T(strBmpname),IMAGE_BITMAP,0,0,
            LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
        m_bitmap.Attach(hBitmap);
        State=1;
    }
    Invalidate();
}
OnDraw()
{
//..........
    if(State==1)
    {
        CDC dcImage;
        if(!dcImage.CreateCompatibleDC(pDC))
            return;
        BITMAP bm;
        m_bitmap.GetBitmap(&bm);   //show the image
        dcImage.SelectObject(&m_bitmap);
        pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);
    }
}

其中m_bitmap为CBitmap成员变量
State为标志位,在构造函数中初始化为0;

3.
要在对话框中显示图片,那就太简单了,在对话框中添加一个picture控件,往资
源中import你想加入的bmp图象,再在picture控件的属性中的
image项中输入import的图片的资源号(如IDC_BITMAP1)就可以了   



--
    ╭─────────────────────────────╮    
         1.背靠着大树,但我不是大树         —— 白岩松               
         2.不会编程序的博士我不要           —— 陈老师               
         3.没有不好的语言,只有不好的程序员 —— sun                  
    ╰─────────────────────────────╯    

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 159.226.42.8]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:16.527毫秒