Teile des Programmhintergrunds transparent machen


  • Administrator

    Schau dir bitte nochmals meinen Code an. Dort setze ich bereits BackColor auf Color.Transparent . Im Designer musst du nichts auf Transparent setzen.

    Grüssli



  • Richtig, und trotzdem wird mir ein grauer Rand angezeigt...

    Ich komme mir gerade vor wie der Kerl aus der Werbung "ich liebe Technik, sie mich nur nicht"...


  • Administrator

    Deffcon schrieb:

    Richtig, und trotzdem wird mir ein grauer Rand angezeigt...

    Und wo? Im Designer definitiv, aber wenn du die Anwendung startest, sollte kein Hintergrund vorhanden sein. Ausser du hast ein anderes Control über alles hineingesetzt.

    Grüssli



  • Ich habe nochmal einen Screenshot gemacht.
    http://img827.imageshack.us/img827/5295/unbenanntii.jpg
    Da sieht man den "Rand".
    Ich habe auch nochmal geschaut, ob ich einen Grund dafür finden könnte aber mir fiel nichts auf.
    Ich habe mit der SuFu nach BackColor gesucht und habe nichts anderes gefunden.


  • Administrator

    Naja, ansonsten überschreib einfach OnPaintBackground und mach darin nichts. Ich weiss allerdings nicht, was das für Nebeneffekte auslösen könnte.

    Grüssli



  • N'Abend Dravere,
    konnte den Befehl gestern nicht probieren, da ich an der Leiste operiert wurde.
    Habe es eben getestet und bekomme wieder einen Fehler, der da lautet:

    Fehler 1 "Bewerbung.Bewerbung.OnPaintBackground(System.Windows.Forms.PaintEventArgs)" ist nicht als abstrakt, extern oder partiell gekennzeichnet und muss daher einen Text deklarieren.

    Was für einen Text soll es deklarieren?
    Sollte doch eher ein Befehl sein.

    Danke


  • Administrator

    Deutsche Fehlermeldungen ... brrrr
    Aber das klingt so, als hättest du keinen Codeblock hingeschrieben.

    protected override void OnPaintBackground(PaintEventArgs args)
    {
      // prevent
    }
    

    Sag mal, seit wie langem programmierst du in C# und was probierst du gerade als Programm zu erreichen? *mal neugierig ist*

    Grüssli



  • Okay, jetzt hat es Wirkung gezeigt und macht den gesamten Hintergrund schwarz.

    Kurz zum Projekt:
    Ich arbeite seit ca 2 Monaten mit C#, habe damit ein paar Programme erstellt, wie zum Beispiel einen Taschen- und Währungsrechner und Mathelernprogramme.

    Das jetzige Projekt wird Bestandteil meiner Bewerbung als Fachinformatiker für Anwendungsentwicklung an der TU Dresden.
    Ich reiche dazu eine normale Bewerbung auf Papier ein und ein Programm, indem man zum einen die Bewerbung als C# Programm anklicken kann und als Website.
    Die Website habe ich soweit fertig (Inhalte füge ich zum Schluss ein). Die kannst du unter http://emohair.em.funpic.de/ ansehen. Kommt natürlich noch auf einen Werbefreien Webspace.
    Und die Page und das Programm sollen eben gleich aussehen.

    Liebe Grüße aus Dresden


  • Administrator

    Deffcon schrieb:

    Okay, jetzt hat es Wirkung gezeigt und macht den gesamten Hintergrund schwarz.

    Hmmm, welche Windows Version benutzt du?

    Du programmierst erst seit 2 Monaten in C# und willst deine Bewerbung darin abgeben? Wieso muss die Bewerbung in C# gleich aussehen? Finde ich irgendwie unpassend dies in C# mit WinForms zu lösen. Naja, nur so meine Meinung 🙂

    Grüssli



  • Ich bin in WinXp unterwegs. 32Bit Version und SP3.

    Es muss nicht gleich aussehen, ich wollte es nur so realisieren, dass ich das gleiche Layout in 2 Verschiedenen Programmierumgebungen darstellen kann.

    Und ich möchte damit nur zeigen, dass Vorkenntnisse vorhanden sind.
    Ich lege großen Wert darauf einen der 5 Ausbildungsplätze dort zu erhaschen.



  • Kennt vielleicht jemand noch einen anderen Weg meine Anwendung in die Form zu bekommen?



  • Bei mir funktioniert das mit SetStyle und BackColor = Color.Transparent auch nicht (habs schon in de ctor geschrieben)...
    Eine andere Möglichkeit ist mittels TransparencyKey (hab den MSDN-link leider gerade nicht zur hand) Da ich aber auf meiner Form Fotos anzeigen will, kann ich keine Farbe Transparent machen, weil auf Fotos grundsätzlich jede Farbe vorkommen kann.

    Sind WinForms überhaupt geeignet, solche Dinge zu realisieren? Oder sollte ich mich besser in WPF einarbeiten? Oder gibt es noch andere, evtl. bessere Lösungen?

    mfg Argus Magnus

    :: edit ::

    Das könnte er sein 😉



  • Diesen Link hatte ich auch schon.
    Hat jedoch bei mir auch nicht gewirkt, da mit dem Transparency-Key Farben transparent gemacht werden, die auf der Form angebracht werden - nicht jedoch Teile der Form selbst.



  • doch, dass hat bei mir funktionirt. Ich habe für den TransparencyKey und meinen Hintergrund dieselbe Farbe gewählt und meine Form war tatsächlich Transparent. Aber leider ist dann jedes Pixel auf der Form (und sei es auf einem Foto das in einer PictureBox angezeigt wird), welches diese Farbe hat, transparent. Was nicht dem gewünschten Effekt entspricht 😞



  • Möglicherweise kannst du für die PictureBoxen einen anderen TransparencyKey nutzen? Oder ihn dafür ausstellen?
    Oder du nimmst einfach so ein krasses lilablassblau, was mit hoher wahrscheinlichkeit nicht in den Bildern vorkommt.

    //EDIT:

    Du kannst ja einfach mal R255, G0, B255; Du ersetzt ja nicht den Farbton, sondern genau diese Farbe, falls sie vorkommt. Müsste ja eigentlich funktionieren.


  • Administrator

    Ich habe ein paar Tests laufen lassen auch auf WinXP. Das mit SetStyle scheint wirklich nicht zu funktionieren unter WinXP SP3. Ich habe es jedenfalls auch nicht zum laufen gebracht. Die Methode mit TransparencyKey und OnPaintBackground haben allerdings funktioniert.

    Wahrscheinlich machst du irgendwo irgendetwas falsch. Allerdings habe ich leider keine Zeit mich durch einen fremden Quellcode zu wühlen. Tut mir leid.
    Wenn er nicht zu gross ist, kannst du ihn ja trotzdem mal als zip File hier anbieten. Vielleicht nimmt sich jemand anderes die Zeit. Aber die Chancen sind meistens gering.

    Grüssli



  • Also mit der onpaintbackground Methode wird bei mir der Hintergrund schwarz. Wenn ich dann den TransparencyKey auf schwarz stelle ist alles transparent, ausser die Buttons und Labels.
    Wie kann man den "Rang" von Buttons und Labels bearbeiten, also einstellen welches oben angezeigt wird und welches darunter verschwindet?
    Ich will so mal ein bisschen rumprobieren.
    __________________________________________________________________________________
    EDIT: okay, habe nun rausgefunden, wie man den Z-Index ändert.



  • Bei Fotos können eben wirklich alle Farben vorkommen. Selbst wenn da nur ein paar wenige pixel betroffen sind, fällt das doch auf. Ich hab auch versucht, den TransparencyKey auf Color.Transparent und den Background auf Color.Transparent zu setzen. Das hat zwar funktioniert, aber sogar diese "Farbe" ist in den Fotos vorgekommen (was ich komisch finde, dachte jpg's können nicht transparent sein).

    Egal, ich schau mir jetzt zuerst mal WPF genauer an, ist anscheinend geeigneter für solche Spielereien als WinForms 🙂

    mfg



  • So. Meine Arbeit ist getan 😃
    ich habe nun die Variante mit onpaintbackground genommen, welches meinen gesamten Hintergrund geschwärzt hat. dann habe ich einfach mit der TransparencyKey Funktion das schwarz auf transparent gesetzt. Die Hintergrundgrafik habe ich dann in eine PictureBox gesetzt und in den Hintergrund geschickt.
    Ist zwar keine professionelle Lösung, aber hat den Effekt erzielt.

    Danke, Thread erledigt.
    MFG Deffcon


Anmelden zum Antworten