gpt4 book ai didi

c# - CopyFromScreen坐标关闭

转载 作者:行者123 更新时间:2023-12-02 22:08:11 27 4
gpt4 key购买 nike

这是对上一个问题的跟进 - 如果跟进违反规则,我们深表歉意!我不确定,也希望能够将完整的答案归功于回答此问题的人。

我正在尝试获取表单特定部分的屏幕截图,并使用 CopyFromScreen 来执行此操作。我需要一个面板的屏幕截图,然后是位于面板上方的项目(上面有 float 的按钮)。

无论如何,当我尝试实现它时,屏幕截图出现在面板左上角的位置。屏幕截图不是面板本身,在图片的右下角只能看到面板的一小部分,面板的上方和左侧区域才是实际显示的区域。

我的实现在某处偏离了,我不完全确定在哪里。你们能看出我做错了什么吗? (再次强调 - 屏幕截图应该只是面板区域的图片。没有别的)。

        Rectangle rect = new Rectangle(0, 0, panel1.Width, panel1.Height);
Bitmap bmp = new Bitmap(panel1.Width, panel1.Height, PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(panel1.Left, panel1.Top, 0, 0, bmp.Size, CopyPixelOperation.SourceCopy);
bmp.Save("Test.jpg", ImageFormat.Jpeg);

最佳答案

当您使用 CopyFromScreen 时,您必须提供屏幕坐标,这里您提供相对于您的表单的坐标。

你应该做的是:(如果你的代码在包含面板的表单中)

int borderWidth = (this.Width – this.ClientSize.Width) /2;
int titleBarHeight = this.Height – this.ClientSize.Height – 2 * BorderWidth;
g.CopyFromScreen(this.Left + panel1.Left + titleBarHeight, this.Top + panel1.Top + borderWidth, 0, 0, bmp.Size, CopyPixelOperation.SourceCopy);

关于c# - CopyFromScreen坐标关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15792158/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com