簡體   English   中英

Web瀏覽器(勝利形式)的不透明度

[英]WebBrowser (win form) opacity

我在另一個控件的頂部有一個系統Windows窗體Web瀏覽器。 Web瀏覽器有一個圖像集。

Web瀏覽器控件的頂部是一個繼承的面板,我可以在其中控制不透明度。

如果將其設為透明,則不會顯示Web瀏覽器圖像,而是顯示Web瀏覽器下控件的背景色。

即Layer1控件。 背面為藍色Layer2 Web瀏覽器,圖像為HTML Layer3透明面板

當透明顯示Layer1而不是Layer2時的Layer3

如何使Web瀏覽器不透明,以便layer3可以顯示到layer2(webbrowser)?

我嘗試設置SetStyles來控制Web瀏覽器上的不透明度。

謝謝

簡短答案:

你不能

實際解決方案:

您是否研究過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();

        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM