昨天我发现了一些非常奇怪的东西(我认为)。看起来Form.TransparencyKey
根据使用哪种颜色作为BackgroundColor
和TransparencyKey
提供不同的结果。如果要重现此内容,请执行以下操作:
Panel
BackgroundColor
,并将Form1的TransparencyKey
也设置为Green 你知道为什么会这样吗?有什么规定?我正在将.NET 4与VS2010一起使用,并在具有相同配置的两台计算机上进行了测试。
没有太多的代码...但是我可以在设计器中发布设置:
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.SuspendLayout();
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Red;
this.panel1.Location = new System.Drawing.Point(23, 26);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(229, 176);
this.panel1.TabIndex = 0;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 262);
this.Controls.Add(this.panel1);
this.Name = "Form1";
this.Text = "Form1";
this.TransparencyKey = System.Drawing.Color.Red;
this.ResumeLayout(false);
}
//that outside:
private System.Windows.Forms.Panel panel1;
最佳答案
我以前曾听说过此问题,但从未意识到它与TransparencyKey选择有关。好发现。几乎可以肯定这是由Aero引起的。禁用此功能后,将通过使用视频适配器中的硬件覆盖来实现效果。启用它后,桌面窗口合成功能将实现它。通常,您可以在DWM赶上并用背景窗口中的像素替换该区域之前,通过非常简短的闪烁来告诉您透明色。关闭窗口的DWM可能会解决此问题,但同时也会失去玻璃效果。
我可以看到颜色值的韵律或原因,对我来说看起来很随意。除了漏洞以外,很难将其称为其他任何东西。我从来没有遇到过这个问题,我总是使用相同的透明键。紫红色,一种出色的深红色。推荐的。
关于c# - C#Form.TransparencyKey对于不同的颜色工作不同,为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4448771/