Растяните видео на весь браузер - PullRequest
0 голосов
/ 21 января 2020

Пожалуйста, помогите мне растянуть видео до полного веб-браузера в Windows формах. Код, который я использую:

web_browser.DocumentText = String.Format("<html><head>" +
  "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>" +
  "</head><body>" +
  "<iframe width=\"100%\" height=\"218\" src=\"https://www.youtube.com/embed/{0}\"" +
  "frameborder = \"0\" allow = \"autoplay; encrypted-media\" allowfullscreen></iframe>" +
  "</body></html>", VideoID);

enter image description here

Ответы [ 2 ]

1 голос
/ 22 января 2020

Вы можете установить встроенный стиль внутри блока HEAD с помощью <style type="text/css">, воздействуя на элементы body и html size, margin и padding при настройке IFrame width и height до 100% как атрибуты самого элемента <iframe>.

Размер видео пропорционален. Если вам нужно ограничить видео определенным размером c, вы всегда можете установить свойство WebBrowser.MaximumSize (или то же свойство его контейнера Form, если WebBrowser привязан / закреплен).

Обратите внимание, что я использовал интерполированную строку, но, конечно, то же самое с string.Format().

string videoID = "Some ID";

webBrowser1.Navigate("");
var doc = webBrowser1.Document.OpenNew(true);
doc.Write(
    "<html><head><meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/> " +
    "<style type=\"text/css\"> " +
    "body { background: black; margin: 0px; padding: 0px; border: 0px; width: 100%; height: 100%; }" +
    "iframe { margin: 0px; padding: 0px; border: 0px; display: block; }" +
    "</style></head><body> " +
    $"<iframe width=\"100%\" height=\"100%\" src=\"https://www.youtube.com/embed/{videoID} \"" +
    "allow = \"autoplay; encrypted-media\" allowfullscreen></iframe>" +
    "</body></html>");

webBrowser1.Refresh();

background: black; не имеет значения. Просто обычный цвет фона видео плееров.

Активация режима расширенной совместимости WebBrowser и поддержка рендеринга графического процессора

Добавьте класс WebBrowserAdvancedFeatures в проект и вставьте этот вызов функции в конструктор формы, функции должны быть активированы до инициализации WebBrowser.
В Form.OnFormClosing расширенные функции отключены.

using System.Security.AccessControl;
using Microsoft.Win32;

public SomeForm()
{
    InitializeComponent();
    WebBrowserAdvancedFeatures.ActivateWBAdvancedFeatures(Path.GetFileName(Application.ExecutablePath));
}

protected override void OnFormClosing(FormClosingEventArgs e)
{
    WebBrowserAdvancedFeatures.DeactivateWBAdvancedFeatures(Path.GetFileName(Application.ExecutablePath));
    base.OnFormClosing(e);
}

// (...)

class WebBrowserAdvancedFeatures
{
    private static string baseKeyName = @"Software\Microsoft\Internet Explorer\Main\FeatureControl";
    private static string featuresKey = baseKeyName+ @"\FEATURE_BROWSER_EMULATION";
    private static string hardwareAccelKey = baseKeyName + @"\FEATURE_GPU_RENDERING";

    public static void ActivateWBAdvancedFeatures(string executableName)
    {
        using (var wbFeatureKey = Registry.CurrentUser.OpenSubKey(featuresKey,
            RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.WriteKey)) {
            wbFeatureKey.SetValue(executableName, 11001, RegistryValueKind.DWord);
        }

        using (var wbAccelKey = Registry.CurrentUser.OpenSubKey(hardwareAccelKey,
            RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.WriteKey)) {
            wbAccelKey.SetValue(executableName, 1, RegistryValueKind.DWord);
        }
    }
    public static void DeactivateWBAdvancedFeatures(string executableName)
    {
        using (var wbFeatureKey = Registry.CurrentUser.OpenSubKey(featuresKey,
            RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.WriteKey)) {
            wbFeatureKey.DeleteValue(executableName, false);
        }

        using (var wbAccelKey = Registry.CurrentUser.OpenSubKey(hardwareAccelKey,
            RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.WriteKey)) {
            wbAccelKey.DeleteValue(executableName, false);
        }
    }
}
1 голос
/ 21 января 2020

Это не имеет смысла? Я предполагаю, что это видео на YouTube?

Вы можете получить ссылку для вставки из любого видео на YouTube, например <iframe width="560" height="315" src="https://www.youtube.com/embed/BsyJMy8_lO0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

, и вставить его с помощью jsx или html? Затем измените свойства ширины и высоты

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