2010-01-29 71 views
3

我一直在試圖將IWebBrowser2控件中的整個畫布呈現爲位圖。 IViewObject :: Draw似乎是最有前途的方法,但我無法讓它呈現任何需要滾動顯示的內容。雖然我可以自動滾動並將圖像拼接在一起,但對於任何固定位置元素來說,這看起來很奇怪。這甚至是可行的嗎?如何使用IViewObject :: Draw渲染畫布的可滾動區域?

此外,我試圖將控制器的大小設置爲允許無需滾動即可顯示整個內容的大小,但Windows會將最大大小限制爲當前屏幕分辨率,這樣只會讓我部分獲取該大小。

任何幫助將不勝感激。我目前正在Win7和IE8的環境下做這件事,但我認爲這不應該太重要。

回答

2

對不起,花了這麼長的時間纔跟上這個答案。

我寫了一篇文章,詳細說明如何欺騙Windows,允許您調整大於虛擬屏幕分辨率的窗口大小,允許PrintWindow或IViewObject :: Draw等功能捕獲整個客戶區(即瀏覽器畫布) 。 (:nirvdrum用戶名)

http://nirvdrum.com/2010/03/25/how-to-take-full-page-or-full-canvas-screenshots-in-windows.html

實際上,在實現該技術可以在我的SnapsIE庫在GitHub上找到。不幸的是,我沒有足夠的業力發佈兩個超鏈接。該存儲庫鏈接從文章雖然。

0

這很可能是一個IE優化,避免繪製超過要求。您可能能夠滾動窗口並在不發生任何動畫的情況下在循環中調用IViewObject :: Draw?

我很驚訝Windows將最大大小限制爲當前屏幕分辨率。你確定嗎 ?

+0

是的,我很確定。我設法通過爲CALL_WND_PROC安裝一個Windows鉤子並從那裏注入一個新的消息處理器來解決它。在該處理器中,我可以修改WM_GETMINMAXINFO消息以更改最大大小。 – nirvdrum 2010-02-07 19:43:54