当前位置:  开发笔记 > 编程语言 > 正文

如何通过在桌面上绘图来截取屏幕截图?

如何解决《如何通过在桌面上绘图来截取屏幕截图?》经验,为你挑选了1个好方法。

我想制作一个SS应用程序.但我对这个问题有疑问.我希望用户能够选择一个特殊区域来截取屏幕截图.我还希望桌面在用户选择区域时处于活动状态.例如,用户想要拍摄视频特定帧的SS.用户必须能够在播放视频时执行此操作.我已经尝试使用直接在桌面上绘图.但它闪烁得那么厉害.我该如何解决这个问题还是有其他办法吗?

我的代码:

    [DllImport("User32.dll")]
    static extern IntPtr GetDC(IntPtr hwnd);

    [DllImport("user32.dll")]
    static extern bool InvalidateRect(IntPtr hWnd, IntPtr lpRect, bool bErase);

    public Form1()
    {
        InitializeComponent();
        this.Load += Form1_Load;
    }

    void Form1_Load(object sender, EventArgs e)
    {
        Start();
    }

    IntPtr handle;
    Graphics grp;

    void Start()
    {
        handle = GetDC(IntPtr.Zero);
        grp = Graphics.FromHdc(handle);
        grp.SmoothingMode = SmoothingMode.HighQuality;
        timer2.Start();
    }
    private void timer2_Tick(object sender, EventArgs e)
    {

        grp.DrawLine(Pens.Red, 0, Cursor.Position.Y, Screen.PrimaryScreen.Bounds.Width, Cursor.Position.Y);
        InvalidateRect(IntPtr.Zero, IntPtr.Zero, false);
    }

miroxlav.. 5

创建具有半透明(或完全透明)背景的表单,该表单始终在顶部,无边框且与桌面大小相同.在该表单上执行任何屏幕截图矩形选择图形(例如,选定的矩形+指南+放大镜,完全不透明).当用户进行选择时,隐藏表单并截取屏幕截图.



1> miroxlav..:

创建具有半透明(或完全透明)背景的表单,该表单始终在顶部,无边框且与桌面大小相同.在该表单上执行任何屏幕截图矩形选择图形(例如,选定的矩形+指南+放大镜,完全不透明).当用户进行选择时,隐藏表单并截取屏幕截图.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有