Transparenter Hintergrund bei Steuerelement

Die Programmiersprache C# und Programmierung im .NET Framework/Mono
Antworten
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Transparenter Hintergrund bei Steuerelement

Beitrag von cloidnerux » Mo Feb 01, 2010 9:27 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Transparenter Hintergrund bei Steuerelement

Beitrag von Xin » Mo Feb 01, 2010 9:31 pm

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?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Transparenter Hintergrund bei Steuerelement

Beitrag von cloidnerux » Di Feb 02, 2010 4:40 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Transparenter Hintergrund bei Steuerelement

Beitrag von Xin » Di Feb 02, 2010 5:51 pm

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?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Transparenter Hintergrund bei Steuerelement

Beitrag von cloidnerux » Di Feb 02, 2010 6:36 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Transparenter Hintergrund bei Steuerelement

Beitrag von Xin » Di Feb 02, 2010 8:47 pm

cloidnerux hat geschrieben:Ich rede von GDI+, die .NET Erweiterung von GDI.
Wie auch immer...

Schaumal zwei Threads weiter in C#....
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Transparenter Hintergrund bei Steuerelement

Beitrag von cloidnerux » Di Feb 02, 2010 9:17 pm

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.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Transparenter Hintergrund bei Steuerelement

Beitrag von Xin » Di Feb 02, 2010 9:32 pm

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
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Transparenter Hintergrund bei Steuerelement

Beitrag von cloidnerux » Do Feb 04, 2010 5:56 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten