位图的显示

Posted Autumn の Box

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了位图的显示相关的知识,希望对你有一定的参考价值。

第一步:创建位图

  CBitmap bitmap;

  bitmap.LoadBitmap(IDB_BITMAP1);

第二步:创建兼容DC

  CDC dcCompatible;

  dcCompatible.CreateCompatibleDC(pDC);

第三步:将位图选入兼容DC中

  dcCompatible.SelectObject(&bitmap);

第四步:将兼容DC中的位图贴到当前DC中

  BOOL StretchBlt(

    int x, int y,  //指定矩形显示区域的左上角的坐标

    int nWidth, int nHeight,  //指定矩形显示区域的宽度和高度

    CDC* pSrcDC,  //源设备上下文

    int xSrc, int ySrc,  //源矩形图像左上角的坐标

    int nSrcWidth, int nSrcHeight,  //源矩形图像的宽度和高度

    DWORD dwRop  //指定颜色复制模式

  );

 

例:

1、在工程的资源窗口中引入一张.bmp位图

2、窗口的绘制过程包含两步:先擦除窗口背景,再对窗口重新进行绘制

  当擦除窗口背景时,程序会发送一个WM_ERASEBKGND消息,在工程的视图类中添加WM_ERASEBKGND消息的响应函数

   

BOOL CGraphicView::OnEraseBkgnd(CDC* pDC) 
{
    // TODO: Add your message handler code here and/or call default
    CBitmap bitmap;
    bitmap.LoadBitmap(IDB_BITMAP1);

    BITMAP bmp;
    bitmap.GetBitmap(&bmp);  //获得源矩形位图的宽度、高度信息
    
    CDC dcCompatible;
    dcCompatible.CreateCompatibleDC(pDC);

    dcCompatible.SelectObject(&bitmap);

    CRect rect;
    GetClientRect(&rect);
    //以1:1显示源位图
    //pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);
    //缩放显示源位图以适应矩形区域
    pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
    
    //return CView::OnEraseBkgnd(pDC); //这里应取消默认的再次擦除窗口背景的操作
    return TRUE;
}

 

以上是关于位图的显示的主要内容,如果未能解决你的问题,请参考以下文章

如何在两个片段之间传递位图? (我正在使用 Android 导航组件)

如何在来自 Firebase 存储的片段 ImageView 中显示图像

合并两个位图的问题

是否可以在OnStop()上回收所有数据并使用保留片段?

透明位图的显示 作者:王骏

如何从Android片段中的相机获取图像