Потрясающий встраиваемый, развертываемый веб-браузер, свободно доступный для независимых разработчиков… Awesomium!

Грег Дункан

Иногда все мы хотим, чтобы наши приложения отображали какой-то HTML-контент. Но не хочется попадать в зависимость от Internet Explorer или других установленных веб-браузеров. Являясь любителем, независимым предпринимателем, или просто забавляясь дома, разработчик не имеет много ресурсов и просто нуждается в браузере, который можно легко встроить в приложение и развернуть вместе с ним. Что было бы потрясающе, так это возможность легко использовать его в приложениях .NET, VB.NET, WinForms или WPF.

Я представляю вам Awesomium!

Я вышел на него с помощью сообщения Криса Каваная (Chris Cavanagh) Awesomium – Free Indie License!

Awesomium – первая полнофункциональная, безоконная платформа веб-браузера.

Она безумно быстрая, поддерживает последние штучки и суперпроста при использовании в приложениях.

Замечательна для применения в 3D-играх, .NET-приложениях, HTML-интерфейсах и прочих вещах.

Для просмотра внутри игр:

Добавьте специальный браузер в игру, чтобы дать пользователям доступ к форумам, руководствам и дополнительному игровому контенту без выхода из приложения.

clip_image002

Для . NET и WPF :

Прекрасна при использовании с WPF; начните с перетаскивания элемента WebViewControl или используйте полный .NET API для всеобщей настройки. Нет проблем с областями «airspace»!

clip_image004

Для интерфейсов HTML :

Придайте мощь своим интерфейсам с помощью последнего поколения XHTML, CSS и JS. Сложившийся набор инструментов и возможности быстрого прототипирования предоставляют эту замечательную новую возможность для разработчиков игр.

clip_image006

И я сказал – свободна для небольших компаний, правда?

clip_image008

Теперь фактический исходник для Awesomium не является свободно распространяемым, но он доступен.

Но если исходник Awesomium не свободен, почему я говорю об этом браузере? Потому что SDK и оболочка AwesomiumSharp свободно доступны (с вышеизложенными условиями).

Ниже приведен снимок экрана примера браузера с закладками, написанного на C# WPF и включенного в SDK.

clip_image010

А здесь – все двоичные файлы для этого примера:

clip_image012

Решение AwesomiumSharp:

clip_image014

(Да, проект Mono тоже здесь... clip_image016 )

Т.к. я VB-шник, взглянем на код для VB.NET WinForm:

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     Dim config As WebCore.Config = New WebCore.Config()
     config.enablePlugins = True


  WebCore.Initialize(config)
     webView = WebCore.CreateWebview(webViewBitmap.Width, webViewBitmap.Height)
     webView.LoadURL("https://www.bing.com")
     webView.Focus()
   End Sub


  Dim bmp As Bitmap
  Private Sub render()
     Dim rBuffer As RenderBuffer = webView.Render()


     Dim data(webViewBitmap.Width * webViewBitmap.Height) As Integer
  Marshal.Copy(rBuffer.GetBuffer(), data, 0, webViewBitmap.Width * webViewBitmap.Height)


     bmp = New Bitmap(webViewBitmap.Width, webViewBitmap.Height, PixelFormat.Format32bppArgb)


     Dim bits As BitmapData = bmp.LockBits(New Rectangle(0, 0, webViewBitmap.Width, webViewBitmap.Height), ImageLockMode.ReadWrite, bmp.PixelFormat)


     Dim ptr As IntPtr = bits.Scan0.ToInt32()
     rBuffer.CopyTo(ptr, bits.Stride, 4, False)


     bmp.UnlockBits(bits)


     webViewBitmap.Image = bmp
   End Sub


  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
     WebCore.Update()
     If webView.IsDirty Then
  render()
     End If
  End Sub

Да, возможно здесь несколько больше работы по использованию этого элемента управления, но мощь, предоставленную вам, сложно переоценить.

Принимая во внимание, что это, фактически, коммерческий продукт, вы могли бы ожидать некоторой документации…

AwesomiumSharp 1.6.

Введение

Привет, добро пожаловать в документацию по Awesomium .NET API! Awesomium – это программная библиотека, с помощью которой легко добавить веб в ваши приложения. Что бы не означал встраиваемый веб-браузинг, рендеринг страниц в изображения, передачу страниц по сети или непосредственное манипулирование веб-контентом для иных целей, Awesomium все это делает.

Если вы впервые используете API, мы рекомендуем начать с AwesomiumSharp.WebCore и AwesomiumSharp.WebView.

Вот простой пример использования API для рендеринга страницы за один раз:

    WebCore.Initialize(new WebCore.Config());
    WebView webView = WebCore.CreateWebview(800, 600);
    webView.LoadURL("https://www.google.com");
    while (webView.IsLoadingPage())
        WebCore.Update();
    webView.Render().SaveToPNG("result.png", true);
    WebCore.Shutdown();
  

Если вы заинтересованы лишь в том, чтобы просто добавить самостоятельный элемент WebView в WPF-приложение, прикладывая минимальные усилия, взгляните на AwesomiumSharp.WebViewControl (он будет доступен в панели инструментов, если вы добавите ссылку на AwesomiumSharp в свой проект, просто перетащив его туда).

Если вы ищете пути применения HTML в своем приложении и хотели бы встроить средство управляемого рендеринга, то это ваш билет в потрясающее…