2012-06-19 3 views
0

Я пытаюсь сделать изображение веб-страницы в приложении. К сожалению, у меня нет доступной для Windows формы Windows, поэтому такие решения, как WebKit.net, недоступны, так как они требуют управления формой, а затем извлекают изображение.Рендеринг картинок: berkelium-sharp

Поэтому я начал рассматривать обертки для Berkelium и только натолкнулся на berkelium-sharp. Кажется, у вас нет документации, чтобы усложнить ситуацию, но, глядя на код, я не вижу способа создать растровое изображение (или подобное) со страницы, которая отображается под ней. Кто-нибудь знает, возможно ли это?

Я должен добавить, что мне нужно использовать .NET 2.0, прежде чем кто-либо начнет предлагать альтернативы, которые не будут работать (хотя я открыт для тех, кто это делает!).

+0

Вы ищете что-то вроде функции 'CopyFromScreen'? –

+0

@AngshumanAgarwal: Вид, хотя фактический элемент, который я хочу скопировать, не должен быть видимым, и мне нужно больше функциональности, которую может предоставить элемент управления WebBrowser. Я действительно связался с автором berkelium-sharp, и я думаю, что у меня есть решение, которое я скоро опубликую. – Ian

ответ

2

Это немного изворотливый, чтобы использовать изначально, но после отправки по электронной почте автора мне удалось придумать следующее в berkelium-sharp. Проводка здесь, если это полезно для кого-то еще.

static void Main(string[] args) 
    {       
     BerkeliumSharp.Init(Path.GetTempPath()); 
     using (Context context = Context.Create()) 
     { 
      BerkeliumSharp.Update(); 
      using (Window window = new Window(context)) 
      { 
       string url = "http://www.google.com"; 
       window.Resize(500, 500); 
       HandlePaint(window, @"m:\berkelium.png"); 
       window.NavigateTo(url); 

       // Give the page some time to update 
       DateTime now = DateTime.Now; 
       while(DateTime.Now.Subtract(now).TotalSeconds < 1) 
        BerkeliumSharp.Update();     
      } 
     } 
    } 

В этом случае используется метод HandlePaint, который включен в исходный код для автоматических тестов. Я также должен добавить, что в тестах есть удобный способ подождать, пока страница не загрузится, чтобы удалить жестко запрограммированную задержку в 1 секунду.

+0

Не могли бы вы более подробно остановиться на своем последнем абзаце? Я искал источник Berkelium для метода HandlePaint, а также читал тестовый код, но я не мог его найти. Я заинтересован в надежном способе, который говорит мне, если сайт закончил загрузку. – marc40000

+0

@ marc40000: Вы смотрите на исходный код Berkelium #? http://code.google.com/p/berkelium-sharp/. Я, кстати, не использовал это, потому что автор сказал мне, что Berkelium не очень стабилен в своей процедуре инициализации/разрыва, так что это привело к сбою моего приложения. Этот тестовый класс имеет метод HandlePaint - http://code.google.com/p/berkelium-sharp/source/browse/trunk/AutomatedTests/BasicTests.cs – Ian

Смежные вопросы