Seite 1 von 1

Transparenter Hintergrund bei Steuerelement

Verfasst: Mo Feb 01, 2010 9:27 pm
von cloidnerux
Ich habe 2 selbstgezeichnete Steuerelemente, die sich zum Teil überdecken.
Da die Steuerelemnte Polygone sind, will ich das in den Flächen, wo quasi nichts sein sollte, das überlappte Steuerlement angezeigt wird.
Also habe ich den Hintergrund Transparent gezeichnet, trotztdem wird der überdeckte Teil des zweiten Steuerelements abgeschnitten und der Hintergrund des übergeordneten Controls gezeichnet.
Wie schaffe ich es nun mit GDI+, den Überlappten Teil anzuzeigen, anstatt den Hintergrund des übergeordneten Controls.

Re: Transparenter Hintergrund bei Steuerelement

Verfasst: Mo Feb 01, 2010 9:31 pm
von Xin
cloidnerux hat geschrieben:Wie schaffe ich es nun mit GDI+, den Überlappten Teil anzuzeigen, anstatt den Hintergrund des übergeordneten Controls.
Reden wir von GDI+ oder von .NET Controls?

Re: Transparenter Hintergrund bei Steuerelement

Verfasst: Di Feb 02, 2010 4:40 pm
von cloidnerux
Reden wir von GDI+ oder von .NET Controls?

Code: Alles auswählen

class EigenesSteuerElement : Control
{
...
    protected override void OnPaint(PaintEventArgs e)
    {
        e.Grafics.Fillrectangle(...);
    }
}
Es ist ein eigenes Steuerlelement, abgeleitet von Control, zeichnet sich aber mit GDI+ komplett selbst.

Re: Transparenter Hintergrund bei Steuerelement

Verfasst: Di Feb 02, 2010 5:51 pm
von Xin
cloidnerux hat geschrieben:
Reden wir von GDI+ oder von .NET Controls?

Code: Alles auswählen

class EigenesSteuerElement : Control
{
...
    protected override void OnPaint(PaintEventArgs e)
    {
        e.Grafics.Fillrectangle(...);
    }
}
Es ist ein eigenes Steuerlelement, abgeleitet von Control, zeichnet sich aber mit GDI+ komplett selbst.
e.Graphics ist nicht GDI... wird vielleicht über GDI abgebildet, aber Du bleibst erstmal in .NET.

Wie hast Du den Hintergrund transparent gezeichnet?

Re: Transparenter Hintergrund bei Steuerelement

Verfasst: Di Feb 02, 2010 6:36 pm
von cloidnerux
Wie hast Du den Hintergrund transparent gezeichnet?

Code: Alles auswählen

 private void PaintTransparentBackground(Graphics graphics)
        {
            graphics.FillRectangle(Brushes.Transparent, this.ClientRectangle); 
        }
e.Graphics ist nicht GDI... wird vielleicht über GDI abgebildet, aber Du bleibst erstmal in .NET.
Ich rede von GDI+, die .NET Erweiterung von GDI.

Re: Transparenter Hintergrund bei Steuerelement

Verfasst: Di Feb 02, 2010 8:47 pm
von Xin
cloidnerux hat geschrieben:Ich rede von GDI+, die .NET Erweiterung von GDI.
Wie auch immer...

Schaumal zwei Threads weiter in C#....

Re: Transparenter Hintergrund bei Steuerelement

Verfasst: Di Feb 02, 2010 9:17 pm
von cloidnerux
Schaumal zwei Threads weiter in C#....
Selber effekt. Die Ränder sind Schwarz, das Überlappte Element wird nicht angezeigt.

Ich habe mal mein Projekt angehangen, dann kann man sich ein Bild davon machen.
Es geht konkret um die SimpleCadTabMenuItem.

Re: Transparenter Hintergrund bei Steuerelement

Verfasst: Di Feb 02, 2010 9:32 pm
von Xin
cloidnerux hat geschrieben:
Schaumal zwei Threads weiter in C#....
Selber effekt. Die Ränder sind Schwarz, das Überlappte Element wird nicht angezeigt.
Ich habe kein C# hier, das kann ich mir frühstens am Donnerstag auf meinem Firmenrechner kurz angucken

Re: Transparenter Hintergrund bei Steuerelement

Verfasst: Do Feb 04, 2010 5:56 pm
von cloidnerux
Ich habe den Fehler, bzw die Lösung gefunden:
JEDES Grafisches Steuerelement zeichnet seinen komplettn Hintergund neu, und der ist schließlich eine Box. Bei normalen Steuerelementan macht das nichts, da sind nur mal die Ecken etwas abgerundet, nicht das ganze Objekt. Um jetzt, alle Elemente richtig zu Zeichnenm müssen sie von einer Übergeordnten Verwalter aufgertufen werde, um dann gemeinsam OHNE Hintergrund gezeichnet werden, quasi als 1 Element.