如果这不是这个问题的合适论坛,我深表歉意 - 但我正在寻找一个应用程序,它将自己分布在多个监视器上(不是在多个监视器上复制相同的图像,而是 1 个图像填充 4 个监视器)。我更喜欢用 as3 / php / javascript 编写它,但如有必要,我会考虑使用 C# 之类的东西。有没有人有任何开始这方面的提示?该平台可以是 PC 或 MAC,但最好有一些开箱即用的软件,以便将软件投影到多台显示器上。
3 回答
一般回答,希望对您有所帮助。
您可以使用 AIR 在不同的监视器上部署具有多个窗口的应用程序。通过使用多个窗口,您将不受 8191 像素宽度上限的限制。IMO 这是一种比跨多个显示器延伸的大窗口更好的方法。
使用Screen类,您可以访问有关系统上当前可用的监视器的信息。此类允许您获取当前可用屏幕的数组Screen.screens
以及屏幕边界screen.bounds
甚至还有一个包装类可以使这个过程更容易一些:
http://www.joristimmerman.be/wordpress/2009/03/03/screenmanager-expand-your-air-application/
使用这个类看起来很简单
ScreenManager.openWindowCenteredOnScreen(new window, screen number);
看起来它还有其他一些对您的情况有用的方法
ScreenManager.stretchWindowToAllScreens() //would be limited by the stage size cap
ScreenManager.openWindowFullScreenOn()
screen.visibleBounds
创建新窗口时,您可以使用它来获取正确的大小信息。
然后,您可以使用NativeWindow在另一个显示器上创建和打开一个新的应用程序窗口。此代码应该可以帮助您入门
var window:NativeWindow = new NativeWindow();
var content:Sprite = new Sprite(); //a container for some display objects to appear inside your new window
window.stage.addChild(content); //adding the content to the new window;
window.activate();
使用它,您将能够创建 4 个窗口,每个显示一个,并为每个窗口附加不同的图像。您还可以将这些屏幕中的每一个设置为每个显示器的全宽和全高。
对于固定设置/安装,我使用几种方法成功地做到了这一点:
舞台尺寸为 QFHD(3840x2160 - 即 4 x HD,配置为 2x2)的单个 Air 应用程序。然后在 application.xml 中简单地设置以下内容,它将跨越它们
<systemChrome>none</systemChrome>
<transparent>false</transparent>
<visible>true</visible>
<minimizable>false</minimizable>
<maximizable>false</maximizable>
<resizable>false</resizable>
<x>0</x>
<y>0</y>
<width>3840</width>
<height>2160</height>
或者使用 ATI eyefinity 显卡,您可以从多个虚拟显示器中创建一个,并且只需使用:
stage.displayState = StageDisplayState.FULL_SCREEN;
stage.align = StageAlign.TOP_LEFT;
Eyefinity 驱动器还使您能够补偿边框,这是一个很棒的功能。
我认为这两种方法都是最好的,因为它们在尝试跨多个NativeWindow's
.
即使我没有测试过这个解决方案,我也会把它放在那里 - 似乎有一个纯粹的硬件解决方案 - 一个拼接墙控制器,它将接收一个视频源并在四个屏幕上均匀地解析它。像这样的东西:
http://www.bhphotovideo.com/c/product/570090-REG/Smart_AVI_UXST4S_Stretcher_Pro.html
似乎它可以做到这一点,而不必在编程方面想出任何花哨的东西,但显然它的成本可能会令人望而却步。