• 位图的显示


    第一步:创建位图

      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;
    }
    
  • 相关阅读:
    Spring 整合过滤器
    Spring Boot 整合 AOP
    Linux IO模式及 select、poll、epoll详解
    java 集合之ArrayList、Vector、LinkedList、CopyOnWriteArrayList
    java 集合之HashMap、Hashtable、LinkedHashMap、TreeMap
    java modCount和fail-fast
    java ArrayList迭代过程中删除
    JVM metaspace元空间
    反转链表
    合并两个排序的链表
  • 原文地址:https://www.cnblogs.com/zhouwanqiu/p/6914813.html
Copyright © 2020-2023  润新知