C # Form.TransparencyKey работает по-разному для разных цветов, почему?

Вчера я обнаружил кое-что очень странное (думаю). Похоже, что Form.TransparencyKey дает разные результаты в зависимости от того, какой цвет используется в качестве BackgroundColor и TransparencyKey . Если вы хотите воспроизвести это, сделайте следующее:

  1. Создайте новое приложение Windows Forms
  2. Поместите Panel в форму
  3. Присвойте ему «Зеленый» как BackgroundColor и установите для Form1 TransparencyKey также зеленый
  4. Запустите программу и поместите форму с «дырой» поверх чего-то, и вы увидите, что вы можете щелкнуть через это отверстие (как описано в MSDN)
  5. Теперь измените оба цвета на «Красный» и запустите приложение - вы увидите «дыру», но вы больше не сможете щелкнуть по ней

Вы знаете, почему это происходит? Какое правило? Я использую .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;
12
задан Episodex 15 December 2010 в 10:31
поделиться