分屏技術檢視原始碼討論檢視歷史
多顯示器擴展桌面的功能
一般情況下,計算機用戶都是使用單一的顯示屏來觀察顯示的信息,比較流行的是17英寸的顯示器,可以滿足一般用戶的需求。但是在一些特殊的場合下,例如需要對現場進行大範圍的監控、CAD繪圖、或應用電子地圖技術等的情況下,需要全景顯示時,用戶就不得不要求計算機有足夠大的顯示桌面,以便對場景的細節看的更清楚、操作起來更方便。
- 中文名:分屏技術
- 外文名:split screen
- 優 點:細節看的更清楚、操作起來更方便
- 支持系統:Windows操作系統
- 實 質:多顯示器擴展桌面的功能
- 桌面尺寸:二十九寸的顯示器
- 示 例:台灣Dream公司ViewPacket軟件
- 系統配置:ATI Mach64、S3 764和764+
- 軟件實現:User32.DLL動態連接庫API函數
桌面尺寸
針對上述情況,即使是二十九寸的顯示器其有效的顯示尺寸也是十分有限的,這時候解決桌面大小問題就不得不採用分屏顯示技術,Windows操作系統支持這種技術,這裡的分屏顯示並不是指採用分屏分配器驅動多個顯示器,從而使多個屏幕顯示相同的畫面,就如同VC界面編程中的動態拆分效果,而是指在一台計算機上安裝多個顯卡帶多台顯示器,實現成倍的擴展計算機桌面尺寸的目的。
示例
例如台灣Dream公司推出的ViewPacket軟件,可以一邊顯示視頻流,一邊編輯Word文檔,一邊上網瀏覽網絡上的信息,極大的方便了用戶的使用。
系統配置
為了安裝多顯示器,首先檢查機器硬件,當前Windows操作系統只支持PCI適配器來實現多顯示器桌面,它要求顯卡必須使用以下芯片組中的一種:ATI Mach64、S3 764和764+、Cirrushgic5436、5446和7458、Imagine 128 Series1和2、S3 Virge或ET6000、M9711等。一般情況下,一個顯卡驅動一個顯示器,一台機器最多可以驅動7台顯示器,其中一台為主顯示器,其餘為副顯示器。主顯示器也是Windows啟動畫面[1] 出現的那個顯示器。
進入"控制面板"-"顯示",雙擊"顯示",彈出"顯示屬性"對話框,選中"設置",如果安裝了多個監視器,這時候對話框的上半部分顯示系統中目前顯示器的數量。可右鍵單擊一個監視器圖標,再單擊"標識"查看對應於單擊其圖標的監視器的顯示編號。請將它們拖動到代表在監視器間移動項目方式的位置。例如,如果您正使用兩個監視器,並希望通過左右拖動來將項目從一個監視器中移到另一個中,請將圖標並排排列。要通過上下拖動來在監視器間移動項目,請將圖標上下排列。圖標的位置並不一定與監視器的物理位置相對應。您可以將圖標上下放置,即使監視器是並排放置的。
軟件實現
通過上面的設置,雖然使Windows支持多顯示器擴展桌面的功能,但也僅僅是實現了設備的連接與管理,一般Windows應用程序的窗口不能自動運行到副顯示器上,用戶只能通過鼠標拖動來將程序的窗口擴展到副顯示器上,如果需要將程序窗口自動擴展到不同的顯示器顯示,必須採用相應的分屏顯示編程技術。在這種技術中,可以使用Windows的User32.DLL動態連接庫提供的API函數SetWindowPos()(如果採用VC這個開發平台,CWnd類提供了一個同樣的成員函數),它的功能是更改窗口的大小、位置及窗口的順序,因此可以用來在多顯示器桌面上實現應用程序窗體的定位顯示。下面對這個函數進行詳細的解釋:
BOOL SetWindowPos(
HWND hWnd, // 窗口的句柄;
HWND hWndInsertAfter, // 窗口次序句柄,
int X, // 窗口左上角的水平位置;
int Y, // 窗口左上角的垂直位置;
int cx, // 窗口的寬度;
int cy, // 窗口的高度;
UINT uFlags file://標誌位;
);
這裡需要解釋的有hWndInsertAfter、uFlags兩個參數
hWndInsertAfter
在窗口的"Z"序中排在需要的設置的窗口之前的窗口句柄;這個參數取以下值:
Value Meaning
HWND_BOTTOM 將要操作的窗口放置在所有窗口之下;
HWND_NOTOPMOST 將要操作的窗口放置在"non-topmost"窗口之下;
HWND_TOP 將操作的窗口放置在所有的窗口之上;
HWND_TOPMOST 將要操作的窗口放置在"non-topmost"窗口之上;
uFlags
規定窗口的尺寸和位置的標誌,這個參數通常取以下值:
Value Meaning
SWP_DRAWFRAME 窗口重畫時,繪製出窗口類中所描述的窗口的框架
SWP_HIDEWINDOW 隱藏窗口;
SWP_NOACTIVATE 窗口無任何動作;
SWP_NOMOVE
保持窗口的當前位置;
SWP_NOREDRAW 在新位置並不重畫窗口;
SWP_NOSIZE 改變窗口的位置,並不改變窗口的大小,既忽略cx,cy兩個參數的值;
SWP_NOZORDER 窗口重畫時,保留當前的順序,既忽略hWndInsertAfter參數的值
SWP_SHOWWINDOW Displays the window.
另,該參數還可以取其它的值,具體含義讀者可以參考MSDN。
為了說明問題,下面的VB代碼僅僅實現了在兩個顯示器分別顯示不同的窗口,用戶點擊按鈕後,主顯示器顯示窗口Form1,副顯示器顯示窗口Form2,感興趣的讀者可以稍加修改,就可以應用到實際項目開發中去。
首先在VB全局模塊中聲明:
Public Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
其次在需要定位的兩個窗口模塊中調用該函數。具體的VB代碼是:
Private Sub Form1_Load( )
Const HWND_TOPMOST=-1
Const SWP_NOACTIVATE=&H10
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, ScreenWidht/2, ScreenHeight, SWP_NOACTIVATE '在主顯示器的顯示區域上顯示窗口1;
End Sub
Private Sub Form2_Load( )
Const HWND_TOPMOST=-1
Const SWP_NOACTIVATE=&H10 SetWindowPos Me.hWnd, HWND_TOPMOST, ScreenWidht/2, 0, ScreenWidht/2, ScreenHeight, SWP_NOACTIVATE '在副顯示器的顯示區域上顯示窗口2;
End Sub
為了正確的顯示,需要將窗體的ScaleMode屬性設置為twips,這樣才可以與Windows系統中ScreenWidth和ScreenHeight的計量單位twips保持一致。
奔馳技術
到2009年夏天,奔馳S級的車主與乘客將可以同時使用COMAND系統提供的導航和娛樂功能。奔馳把這種同博世合作開發的技術稱作「分屏(Splitview)」。
Splitview技術將在2009年夏天應用於奔馳S級轎車
從具體的技術層面來講,「分屏」技術能把2個不同畫面的像素先進行拆分,然後「相間」地在8英寸的屏幕上排列來自不同畫面的像素。這時你所看到的信息是完全零亂的。技術的關鍵就是奔馳會在這塊LCD上附加一張過濾罩,信息交錯的像素所發出的光線,經過這個過濾罩後,就會被分離成2幅獨立而完整的畫面了,而且這2幅畫面的方向性比較強,這樣不同座位上的人才可以各取所需,互不干擾。奔馳還強調,該版本的COMAND系統還可以支持2個用戶隨時各自調整自己的顯示信息,譬如司機可以通過中控台上的按鈕縮放地圖,同時旁邊的乘客可以用遙控器選擇想看的影片,甚至電視頻道。當然考慮到對駕駛安全的影響,S級肯定會提供耳機插座。
這家百年老店總是第一時間將新穎又實用的技術運用到汽車上
從根本的設計思路上,有點像風靡一時的立體電影,通過特殊的眼鏡分離不同的畫面,分別送到人的左眼和右眼,大腦會誤認為電影是立體的。而在新一代COMAND的「分屏」技術面前,左眼是司機,右眼是乘客。
聯想到立體電影經常會導致很多人眼睛不適,甚至頭暈,分屏技術的畫面質量是否可以得到保證,受到了人們的質疑。但奔馳對此信心十足,因為奔馳S級從未讓她的客戶失望過。
視頻
畫面分屏效果 [1]