Laden...

Keine echte Transparenz

Erstellt von areopag vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.229 Views
a
areopag Themenstarter:in
22 Beiträge seit 2005
vor 17 Jahren
Keine echte Transparenz

Hallo zusammen!

Wird im .NET Framework, bzw. deren Steuerelememente keine echte Transparents untestützt?
z.B. lege ich über einen Button ein label, dessen BackColor eigenschaft lege ich auf Transparent.
Leider wird immer die Back color des Form-Hintergrunds bzw. dessen Backgroundpicture in diesem label angezeigt, nicht der button im hintergrund.
Im VB 6.0 hat dies noch weinwandfrei funktioniert.

Gibt es ein Workarround, oder finde ich einfach die richtige Eigenschaft nicht, die ich definieren muss. z.B. Transparent=true

Mfg,
AreoPag

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo areopag,

es ist so wie du sagst. Man sieht den Hintergrund des Containers, in dem sich das transparente Control befindet und nicht die in der Z-Order dahinter befindlichen Controls. Workaraound ist die Controls ineinander zu fügen, statt alle in den Container, z.B. lbl.Controls.Add (btn)

herbivore

830 Beiträge seit 2005
vor 17 Jahren

Hallo areopag,

ein komplett dursichtiges Control, in diesem Fall ein Panel kann man so erstellen:


using System;
using System.Windows.Forms;
using System.Drawing;

namespace Form1
{
	public abstract class TransPanel : Panel 
	{
		private Graphics g;

		protected TransPanel() 
		{ 
			this.g = this.CreateGraphics();
			this.Click += new EventHandler(TransPanel_Click);
		} 

		protected override CreateParams CreateParams 
		{ 
			get 
			{ 
				CreateParams cp=base.CreateParams; 
				cp.ExStyle|=0x00000020;
				return cp; 
			} 
		}   

		private void Clear() 
		{ 
			if(Parent==null) 
				return; 

			Rectangle rc=new Rectangle(this.Location,this.Size); 
			Parent.Invalidate(rc,true); 
		}   

		protected override void OnPaintBackground(PaintEventArgs pevent){}   

		protected override void OnPaint(PaintEventArgs e){}

		private void TransPanel_Click(object sender, EventArgs e)
		{
			MessageBox.Show("Durchsichtiges Panel");
		}
	}

	public class tPanel : TransPanel
	{
		public tPanel()
		{
			this.Controls.Add(new Button());
		}
	}
}

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.