c#缩略图方式截屏效率高

这个c#,csharp缩略图方式可以获取任何窗口,包括最小化的窗口,包括DX窗口,静止窗口,视频窗口,游戏窗口,速度极快.CPU占用极小!特意提出完整程序,VS2022编译通过。

下载完整源码在:https://download.csdn.net/download/lglyjlylglyjly/88847519?spm=1001.2014.3001.5501


    ///     这个c#,csharp缩略图方式可以获取任何窗口,包括最小化的窗口,包括DX窗口,静止窗口,视频窗口,游戏窗口,速度极快.CPU占用极小!特意提出完整程序,VS2022编译通过。
    public partial class jietu_suoluetu : Form
    {
        private IntPtr _hThumbnail = IntPtr.Zero;
        private IntPtr _hWnd = IntPtr.Zero;
        private int widow_width, widow_hight;
        public jietu_suoluetu()
        {
            InitializeComponent();
        }

        private void jietu_suoluetu_Load(object sender, EventArgs e)
        {
            
          _hWnd=  caozuowindow.FindWindow_ByTitlec("播放");//这里改变要截屏的窗口
            IntPtr hscrdc = jietushibie.GetWindowDC(_hWnd);
            jietushibie.RECT rECT = new jietushibie.RECT();
            jietushibie.GetWindowRect(_hWnd, ref rECT);

            widow_width = rECT.Right- rECT.Left;
           widow_hight = rECT.Bottom- rECT.Top;
            //目标窗口和源窗口必须都是顶级窗口,在目标窗口和源窗口之间创建桌面窗口管理器(DWM)缩略图关系。
            var hr = NativeMethods.DwmRegisterThumbnail(this.Handle, _hWnd, out _hThumbnail);
            if (hr != 0)
                return;

            UpdateThumbnailProperties();
        }

        private void jietu_suoluetu_ResizeEnd(object sender, EventArgs e)
        {
            if (_hThumbnail == IntPtr.Zero)
                return;

            UpdateThumbnailProperties();
        }

    

        private void UpdateThumbnailProperties()
        {
            var dpi = new Point(1, 1);
            var props = new DWM_THUMBNAIL_PROPERTIES
            {
                //所有字段解释
                //dwFlags 给出了接下来的那个字段是有效的。
                //rcDestination 字段表示目的窗体用来显示缩略图的客户区域的边界范围。若想使用该字段,请在dwFlags 中包含DWM_TNP_RECTDESTINATION标记。
                //rcSource 字段表示窗体客户区域的边界,该范围的内容将显示到缩略图中。若想使用该字段,请在dwFlags 中包含DWM_TNP_RECTSOURCE标记。
                //opacity 字段表示缩略图的不透明度。若源窗体是半透明的,那么缩略图也将是半透明的,提供这个选项仅仅为了需要时得更全面控制而已。若想使用该字段,请在dwFlags 中包含DWM_TNP_OPACITY标记。
                //fVisible 允许我们暂时打开/关闭缩略图功能,而无须注册/取消注册。若想使用该字段,请在dwFlags 中包含DWM_TNP_VISIBLE标记。
                //fSourceClientAreaOnly 用来让缩略图只显示源窗口的客户区域,而并不包含其边框内容。若想使用该字段,请在dwFlags 中包含DWM_TNP_SOURCECLIENTAREAONLY标记。
                fVisible = true,
                // 标识哪些字段已经设置了有效值
                dwFlags = (int)(DWM_TNP.DWM_TNP_VISIBLE | DWM_TNP.DWM_TNP_OPACITY | DWM_TNP.DWM_TNP_RECTDESTINATION | DWM_TNP.DWM_TNP_SOURCECLIENTAREAONLY),
                opacity = 255,  //不透明度
                                // 绘制缩略图的尺寸,根据实际情况调整大小和位置
                rcDestination = new RECT { left = 0, top = 0, bottom = (int)(widow_hight * dpi.Y), right = (int)(widow_width * dpi.X) },
                fSourceClientAreaOnly =true
            };
          ;//按属性显示桌面窗口管理器的 (DWM) 缩略图。
        }
    }

 下载完整源码在:https://download.csdn.net/download/lglyjlylglyjly/88847519?spm=1001.2014.3001.5501

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值