欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
C#同步代码中调用async异步方法.Result等待导致阻塞死锁deadlock的问题 C# 使用 HttpClient错误?SocketException:现有连接被远程主机强行关闭
晴天  C#屏幕截图,指定区域截图,窗口截图的实现
[ 发布日期:11个月前 (12-21) ]   [ 来自:本站原创 ] [分类:C# .Net编程]
核心方法是使用Graphics类的CopyFromScreen方法将窗口的内容复制到位图中。
指定区域截图,只需要将屏幕图片按区域裁剪即可。
指定窗口截图,先获取窗口的位置和大小,然后转化为指定区域截图了。
如果是制作指定窗口的录屏程序时,需要注意实时跟踪窗口的位置和大小(窗口位置和大小可能会调整变化)。
其它的就没有特别的了。

例子代码:
[复制到剪贴板]

using System;
using System.Drawing;
using System.Runtime.InteropServices;

class 
Program
{
    [
DllImport("user32.dll")]
    static 
extern IntPtr GetForegroundWindow();

    [
DllImport("user32.dll")]
    [return: 
MarshalAs(UnmanagedType.Bool)]
    static 
extern bool GetWindowRect(IntPtr hWndout RECT lpRect);

    [
StructLayout(LayoutKind.Sequential)]
    public 
struct RECT
    
{
        public 
int Left;
        public 
int Top;
        public 
int Right;
        public 
int Bottom;
    }

    static 
void Main()
    {
        try
        {
            
// 获取活动窗口句柄
            
IntPtr hWnd GetForegroundWindow();

            
// 获取窗口位置和大小
            
RECT windowRect;
            
GetWindowRect(hWndout windowRect);

            
// 创建Bitmap对象
            
using (Bitmap bmp = new Bitmap(windowRect.Right windowRect.LeftwindowRect.Bottom windowRect.Top))
            {
                
// 创建Graphics对象
                
using (Graphics g Graphics.FromImage(bmp))
                {
                    
// 将窗口内容绘制到Bitmap中
                    // 这里可以直接指定位置和大小进行图片截取拷贝
                    
g.CopyFromScreen(new Point(windowRect.LeftwindowRect.Top), Point.Empty, bmp.Size);
                }

                
// 保存屏幕截图(可根据需要进行保存)
                
bmp.Save("screenshot.png");
                
                
Console.WriteLine("屏幕截图已保存成功。");
            }
        }
        catch (
Exception ex)
        {
            
Console.WriteLine("发生异常:" ex.Message);
        }
    }


引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/316
复制引用地址https://www.rickw.cn/trackback/316/GBK
[ 分类:C# .Net编程  | 查看:1015 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2024 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5