zoukankan      html  css  js  c++  java
  • 【Demo 0048】截取窗体背景及控件界面

    本例将提炼了Demo0049显示控件中的方法,单独演示如何截取窗体的背景以及仅截取窗体的控件界面图;

    一、代码演示
        仅截取窗体中控件的效果图
        SendMessage(hWnd, WM_PRINT, (WPARAM)hDCMem, PRF_CHILDREN|PRF_CLIENT|PRF_ERASEBKGND|PRF_NONCLIENT|PRF_OWNED);
        截取窗体上所有元素(背影和控件)的效果图

        BitBlt(hDCMem, 0, 0, rtWnd.right - rtWnd.left, rtWnd.bottom - rtWnd.top, hDC, 0, 0, SRCCOPY);

       

    //////////////////////////////////////////////////////////////////////////
    HBITMAP _CaptureWindow(HWND hWnd, bool bCaptureCtrl)
    {    
        RECT rtWnd;
        GetWindowRect(hWnd, &rtWnd);

        HDC hDC = GetDC(hWnd);
        HDC hDCMem = CreateCompatibleDC(hDC);
        HBITMAP hBitmap = CreateCompatibleBitmap(hDC, rtWnd.right - rtWnd.left, rtWnd.bottom - rtWnd.top);
        
        HGDIOBJ hOld = SelectObject(hDCMem, hBitmap);

        if (bCaptureCtrl)
        {
            SendMessage(hWnd, WM_PRINT, (WPARAM)hDCMem, PRF_CHILDREN|PRF_CLIENT|PRF_ERASEBKGND|PRF_NONCLIENT|PRF_OWNED);
        } else {
            BitBlt(hDCMem, 0, 0, rtWnd.right - rtWnd.left, rtWnd.bottom - rtWnd.top, hDC, 0, 0, SRCCOPY);
        }
        SelectObject(hDCMem, hOld);
        DeleteObject(hDCMem);
        ReleaseDC(hWnd, hDC);

        return hBitmap;
    }

    二、效果

    image

                     左图为显示窗体, 右图为原窗体(仅截取窗体中控件)

       image

                  左图为显示窗体, 右图为原窗体(截取窗体中控件以及窗体的背影)

    演示代码

  • 相关阅读:
    C# 泛型
    css样式优先级
    c# 可空类型
    JS 两个数组合并
    c# 参数传递问题(形参与实参)
    c# JsonReader读取json字符串
    C# 获取当前ip
    swprintf引发的血案
    Struts2解析FreeMarker模板中变量的顺序
    structs2在action中输出
  • 原文地址:https://www.cnblogs.com/ztercel/p/2172904.html
Copyright © 2011-2022 走看看