Вы можете установить встроенный стиль внутри блока 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);
}
}
}