首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >统一选择屏幕/显示在Agora屏幕共享应用程序中的Windows

统一选择屏幕/显示在Agora屏幕共享应用程序中的Windows
EN

Stack Overflow用户
提问于 2020-08-31 20:05:52
回答 2查看 1.3K关注 0票数 0

我正试图在Agora的帮助下为Windows开发一个屏幕共享应用程序。当我使用函数StartScreenCaptureByScreenRect()时,我成功地捕获了整个VirtualScreen或主屏幕。当我试图捕捉另一个/第二个显示器时,我遇到了麻烦。

我的设置是2显示器1920x1080。当我尝试使用Screen.AllScreens时(它应该从System.Windows.Forms返回一个包含系统上所有显示的数组),例如,它不返回两个1920x1080监视器,它返回位于(0,0)位置的一个3840x1080监视器,布局是{主}{备用}。

我实际上想要做的是在VirtualScreen中找到每个屏幕/显示器的“坐标”(除了我知道的主坐标是(0,0))。我认为屏幕类是我所需要的,但它似乎没有我所需要的功能。我是做错什么了还是应该改变我的方法?

更新:

我设法得到了每个屏幕的位置和分辨率(x,y,宽度,高度),但我现在有了另外一个问题。如果屏幕位于主屏幕的上方和/或左侧,y和/或x将为负数。然后实例化一个矩形,将其传递给StartScreenCaptureByScreenRect(),该函数将返回一个无效的参数错误。它只适用于正x和y(如果屏幕在主屏幕的下方和/或右边)。

这是窃听器还是我漏掉了什么?

EN

回答 2

Stack Overflow用户

发布于 2020-09-01 00:56:14

这里的团结是不同的。你没做错什么。如果您能够获得3840x1080分辨率,那么您将非常接近于共享第二个显示。矩形( 1920,0,1920,1080)是您要放置的区域。例如,考虑以下代码:

代码语言:javascript
运行
复制
TestRectCrop(0);  // display 1
TestRectCrop(1);  // display 2

void TestRectCrop(int order)
{
    // Assuming you have two display monitors, each of 1920x1080, position left to right:
    Rectangle screenRect = new Rectangle() { x = 0, y = 0, width = 1920 * 2, height = 1080 };
    Rectangle regionRect = new Rectangle() { x = order * 1920, y = 0, width = 1920, height = 1080 };

    int rc = mRtcEngine.StartScreenCaptureByScreenRect(screenRect,
        regionRect,
        default(ScreenCaptureParameters)
        );
    if (rc != 0) Debug.LogWarning("rc = " + rc);
}
票数 0
EN

Stack Overflow用户

发布于 2021-09-01 17:30:30

只是一个更新,如果你发现这个线程和寻找屏幕共享的例子-我们有这里是一个改进的例子,请使用这个来测试和调整您的桌面屏幕共享实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63677498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档