Я пытаюсь скрыть свой ChromiumWebBrowser за изображениями, видео и т. д. Но каждый раз, когда он меняется с ChromiumWebBrowser на что-то еще, кроме пустой панели или другого ChromiumWebBrowser, он мигает черным на несколько кадров.
аппаратное обеспечение:
- i7-8559U
- Intel IRI плюс графика 655
CefSharp версии 79.1.350 для программы Winform
Вот что я пробовал:
- BringToFront другой PictureBox
- Отправить в поддержку ChromiumWebBrowser
- Видимость панели
- Панель двойнаяШлифованная
Я также включаю Cef.EnableHighDPISupport(); но безуспешно.
Единственное, что пока сработало, это ДОБАВИТЬ SetOffScreenRenderingBestPerformanceArgs();
Но, к сожалению, он отключает реализацию WebGL :/ и я хотел бы сохранить его для более поздних целей.
static class Program
{
/// <summary>
/// Point d'entrée principal de l'application.
/// </summary>
[STAThread]
static void Main()
{
Cef.EnableHighDPISupport();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
public partial class Form1 : Form
{
private static ChromiumWebBrowser chrome;
private PictureBox ImageBox = new PictureBox();
private Panel pPictureBox = new Panel();
private Panel pChromium = new Panel();
Timer timer = new Timer();
public Form1()
{
InitializeComponent();
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
ImageBox.Image = Properties.Resources._3080;
ImageBox.SizeMode = PictureBoxSizeMode.StretchImage;
pPictureBox.Controls.Add(ImageBox);
ImageBox.Dock = DockStyle.Fill;
pPictureBox.Dock = DockStyle.Fill;
pPictureBox.Size = this.Size;
this.Controls.Add(pPictureBox);
pPictureBox.BringToFront();
InitializeChromium();
timer.Interval = 7000;
timer.Start();
timer.Tick += Timer_Tick;
}
private void Timer_Tick(object sender, EventArgs e)
{
if (pChromium.Visible)
{
pChromium.Hide();
}
else
{
pChromium.Show();
}
}
private void InitializeChromium()
{
pChromium.Dock = DockStyle.Fill;
pChromium.Size = this.Size;
CefSettings settings = new CefSettings();
//Work but disable WebGL
//settings.SetOffScreenRenderingBestPerformanceArgs();
//settings.DisableGpuAcceleration();
Cef.Initialize(settings);
chrome = new ChromiumWebBrowser("https://www.apple.com/ca/airpods-pro/");
pChromium.Controls.Add(chrome);
this.Controls.Add(pChromium);
chrome.Dock = DockStyle.Fill;
pChromium.BringToFront();
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(1904, 1041);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Cef.Shutdown();
}
}
У вас есть какое-нибудь решение?
Cef.EnableHighDPISupport();
намного раньше при выполнении ваших приложений, так как слишком поздний вызов ничего не даст. github.com/cefsharp/CefSharp. MinimalExample/blob/master/ - person amaitland   schedule 01.02.2020BufferedPanel
? - person amaitland   schedule 01.02.2020pictureBox2
, пожалуйста, убедитесь, что он скомпилирован самостоятельно. Используйте стандартную панель дляChromiumWebBrowser
, двойная буферизация не поддерживается элементом управления. - person amaitland   schedule 02.02.2020