WebBrowser(获胜形式)不透明

本文关键字:不透明 获胜 WebBrowser | 更新日期: 2023-09-27 17:58:56

我在另一个控件上有一个系统窗口窗体web浏览器。web浏览器有一个图像集。

在web浏览器控件的顶部是一个继承的面板,我可以在其中控制不透明度。

如果我让它透明,它不会显示网络浏览器图像,而是显示网络浏览器下控件的背景色。

Ie第1层控件。背面颜色为蓝色图像为HTML的Layer2 web浏览器Layer3透明面板

透明时的第3层显示第1层而不是第2层

如何使web浏览器不透明,以便第3层显示到第2层(web浏览器)?

我已尝试在web浏览器上设置设置样式以控制不透明度。

感谢

WebBrowser(获胜形式)不透明

简短回答:

你不能。

真实世界解决方案:

你调查过WPF吗?

长答案:

不透明度是WinForms的一个技巧。

当控件被标记为显示为透明(或半透明)时,WinForms会查询父对象的视觉效果,询问"如果我的控件不存在,你会在这里打印什么?"。根据此结果,WinForms显示控件的像素、父对象的像素或两者的组合(如果半透明)。

这在一个简单的例子中变得非常明显:

  1. 创建新的winforms项目
  2. 创建2个标签,将它们叠放在一起(轻微偏移)
  3. 将两个标签背景都设置为Color.Transparent

你会立即看到,透明度从下面的标签中去掉了一大块。

示例代码(全部在一个文件中,编译并运行):

using System;
using System.Windows.Forms;
using System.Drawing;
namespace WindowsFormsApplication5
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }
    }
    public class MainForm : Form
    {
        private Random random = new Random();
        private Button btnRandomBackgroundColor;
        private Label lblBackgroundLabel;
        private Label lblTransparent;
        public MainForm()
        {
            InitializeComponent();
        }
        private void button_Click(object sender, EventArgs e)
        {
            BackColor = Color.FromArgb(random.Next(0, 255),
                                            random.Next(0, 255),
                                            random.Next(0, 255));
        }
        private void InitializeComponent()
        {
            this.btnRandomBackgroundColor = new System.Windows.Forms.Button();
            this.lblBackgroundLabel = new System.Windows.Forms.Label();
            this.lblTransparent = new System.Windows.Forms.Label();
            this.SuspendLayout();
            // 
            // btnRandomBackgroundColor
            // 
            this.btnRandomBackgroundColor.Location = new System.Drawing.Point(12, 12);
            this.btnRandomBackgroundColor.Name = "btnRandomBackgroundColor";
            this.btnRandomBackgroundColor.Size = new System.Drawing.Size(144, 23);
            this.btnRandomBackgroundColor.TabIndex = 0;
            this.btnRandomBackgroundColor.Text = "Randomize Background Color";
            this.btnRandomBackgroundColor.UseVisualStyleBackColor = true;
            this.btnRandomBackgroundColor.Click += button_Click;
            // 
            // lblBackgroundLabel
            // 
            this.lblBackgroundLabel.AutoSize = true;
            this.lblBackgroundLabel.BackColor = System.Drawing.Color.Transparent;
            this.lblBackgroundLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblBackgroundLabel.Location = new System.Drawing.Point(41, 49);
            this.lblBackgroundLabel.Name = "lblBackgroundLabel";
            this.lblBackgroundLabel.Size = new System.Drawing.Size(184, 33);
            this.lblBackgroundLabel.TabIndex = 1;
            this.lblBackgroundLabel.Text = "Simple Label";
            // 
            // lblTransparent
            // 
            this.lblTransparent.AutoSize = true;
            this.lblTransparent.BackColor = System.Drawing.Color.Transparent;
            this.lblTransparent.Font = new System.Drawing.Font("Microsoft Sans Serif", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lblTransparent.Location = new System.Drawing.Point(61, 63);
            this.lblTransparent.Name = "lblTransparent";
            this.lblTransparent.Size = new System.Drawing.Size(251, 33);
            this.lblTransparent.TabIndex = 2;
            this.lblTransparent.Text = "Transparent Label";
            // 
            // 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(341, 114);
            Controls.Add(this.lblTransparent);
            this.Controls.Add(this.lblBackgroundLabel);
            this.Controls.Add(this.btnRandomBackgroundColor);
            this.Name = "Form1";
            this.Text = "MainForm";
            this.ResumeLayout(false);
            this.PerformLayout();
        }
    }
}