图形图像显示研究(一)

作者:朱金灿

来源:www.cnblogs.com/clever101

 

一.前言

 

最近因为工作需要,也因为自己的兴趣,决心好好研究一下图形图像的显示。图形图像显示,既可以说是一个古老的研究课题,也可以说是一个年轻的课题。说它老,或许它可以和计算机的历史一样长。说它年轻,和很多老课题一样,随着多线程、GPU等新技术的诞生又焕发了新的面貌。

 

      闲话少说,言归正传。在这次研究中,我初步计划是:首先研究大图像的快速显示,包括在GDIGDI+OpenGL环境下漫游、放大、缩小和拖动等等以及效率测试、双缓冲绘图等等;其次是大图像的金字塔算法;三是矢量图形的快速显示;四是新技术在图形图像显示方面的应用,具体方法是下载资料和源码,看资料和源码。

 

 

二.简单的位图显示

 

事实上进行简单的位图显示是一件很简单的事情。只需要在视图类的OnDraw函数加入下面的代码:

  void CShowBmpView::OnDraw(CDC* pDC)
{
    CShowBmpDoc
* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    
// TODO: add draw code for native data here
    if(m_AllowShowBmp) //假如允许显示bmp图片
    {
    CBitmap bitmap; 
//定义一个位图类变量
    /*从文件中装入位图*/
    HBITMAP chbitmap 
= (HBITMAP)LoadImage(
        NULL, 
//如果从资源加载,则指明包含位图资源的程序实例句柄
        m_FilePath,//位图文件路径(含文件名)
        IMAGE_BITMAP,//加载的图像类型为位图
        0,0,    //宽度和高度,0表示使用默认值
        LR_LOADFROMFILE); //加载标志,表明从文件加载
    bitmap.Attach(chbitmap);
    
/*创建一个兼容DC*/
    CDC dcComp;
    dcComp.CreateCompatibleDC(pDC);
    
/*将位图选入兼容DC中*/
    dcComp.SelectObject(
&bitmap);
    BITMAP bminfo;  
//定义位图信息结构体变量
    bitmap.GetObject(sizeof(bminfo),&bminfo);//取得位图信息
    pDC->BitBlt(
        
0,0,    //显示位置
        bminfo.bmWidth,bminfo.bmHeight,//显示位图的宽度和高度
        &dcComp,  //位图所在的兼容DC
        0,0,   //兼容DC中的位置
        SRCCOPY);  //显示方式,表示直接复制
    }
}


未完待续!




posted @ 2009-09-30 23:32  是金子就会灿烂  阅读(332)  评论(0编辑  收藏  举报