zoukankan      html  css  js  c++  java
  • Gdi绘图

      在使用VC开发项目过程中,界面是项目中的一个子模块。虽然界面并不那么重要,把握住核心功能就可以了,但界面美观与否直接关系到用户的体验, 因此我们也应该关注界面的处理。

      我们可以在OnEraseBkgnd处理函数中,利用GDI绘图与双缓冲技术来设置背景。

      在下面的这个程序中,在OnEraseBkgnd处理函数中直接设置对话框的显示背景,下图是运行结果。

      通过创建一个和屏幕相关联的内存DC,并把位图选入内存DC中,然后在内存DC上进行绘图,绘图结束后把内存DC中的数据拷贝到屏幕DC,这样就可以在对话框上显示出设置好的背景。

    BOOL CMyDlg::OnEraseBkgnd(CDC *pDC)
    {
        CDialog::OnEraseBkgnd(pDC);
    
        CRect RectWindow;
    
        //获取客户区域坐标
        GetClientRect(&RectWindow);
    
        //创建内存DC
        HDC hMemDC = CreateCompatibleDC( pDC->GetSafeHdc() );
    
        //创建位图
        HBITMAP hBitmap = CreateCompatibleBitmap( pDC->GetSafeHdc(), RectWindow.Width(), RectWindow.Height() );
    
        //把位图选入内存DC中
        HBITMAP hOldBitmap = (HBITMAP)SelectObject( hMemDC, hBitmap );
    
        //填充内存DC
        FillRect( hMemDC, &RectWindow, CreateSolidBrush( RGB(201, 201, 201) ) );
    
        //把内存DC中的位图拷贝到窗口DC上
        BitBlt( pDC->GetSafeHdc(), 0, 0 , RectWindow.Width(), RectWindow.Height(), hMemDC, 0, 0, SRCCOPY );
    
        //清理工作
        SelectObject( hMemDC, hOldBitmap );
        DeleteDC( hMemDC );
        DeleteObject( hBitmap );
    
        return true;
    }
  • 相关阅读:
    10.11-10.16
    10.8-10.10
    9.26-28
    9.29css继承属性
    表单的学习
    排版
    css补充
    今天学的新内容
    新内容
    文本样式的修改
  • 原文地址:https://www.cnblogs.com/xydblog/p/3641812.html
Copyright © 2011-2022 走看看