zoukankan      html  css  js  c++  java
  • 位图的显示

    第一步:创建位图

      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;
    }
    
  • 相关阅读:
    STM32 HAL库学习笔记
    嵌入式Linux学习笔记
    AVR_Interrupt
    shutdown命令用法
    ULINK2 USB电脑无法识别(连接电脑后,设备管理器显示未知设备)
    MDK中编译程序后Program Size详解
    Keil(MDK-ARM)系列教程(三)_工程目标选项配置(Ⅰ)
    第48章 MDK的编译过程及文件类型全解
    Do not access Object.prototype method ‘hasOwnProperty’ from target object no-prototype-builtins
    让vscode按照eslint进行格式化
  • 原文地址:https://www.cnblogs.com/zhouwanqiu/p/6914813.html
Copyright © 2011-2022 走看看