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
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
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.