Anzeige Probleme bei: Transparentes Bild + Transparente Form

  • VB.NET
  • .NET (FX) 4.0

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von simpelSoft.

    Anzeige Probleme bei: Transparentes Bild + Transparente Form

    Hallo Comm,
    Ich versuche aktuell ein Bild was Transparent enthält ordentlich in eine Form zu zeichnen.

    Die Form selber ist durch BackColor = Lime & TransparencyKey = Lime Transparent.
    Leider habe ich jedoch bei dem Bild was ich zeichne einen grünen rand :c

    Spoiler anzeigen
    Das Bild Zeichne ich mit:

    VB.NET-Quellcode

    1. Dim myGraphics As Graphics = Graphics.FromHwnd(Me.Handle)
    2. myGraphics.Clear(Me.BackColor)
    3. myGraphics.DrawImage(My.Resources.testbild, 1, 1)
    4. myGraphics = Nothing

    Kann mir jemand erklären wie ich mein vorhaben umsetzen kann?

    #EDIT: Noch eine 2 Frage
    Wie kann ich etwas über mehrere Controls hinweg Zeichen also in der art "AllwaysOnTop"

    LG Ruerte
    Bilder
    • transparente_bild.png

      100,3 kB, 1.024×373, 195 mal angesehen
    • wie_die_form_ausschaut.PNG

      126,2 kB, 976×235, 133 mal angesehen
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Ruerte“ ()

    Ruerte schrieb:

    umsetzen
    Da musst Du in die Pixel reingehen und die explizit auf Lime setzen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany ich nehme mal an das liegt daran das zuerst alle Controls etc. gezeichnet werden und anschließend der
    TransparencyKey entfernt wird wodurch durch die Halbtransparenz am Rand des Bildes ein Grüner Schleier zurück bleibt?

    Wenn ich richtig liege... Gibt es keine Möglichkeit die Form "Transparent" zu machen bevor andere Sachen Dargestellt werden?

    Und noch eine 2 Frage. wie kann ich ein Bild über mehrere Controls "Drüber" zeichnen

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    @Ruerte hast du mal versucht den Transparent im "New" zu setzten?
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Ruerte schrieb:

    zurück bleibt?
    K.A.

    Ruerte schrieb:

    bevor andere Sachen Dargestellt werden
    Da müsstest Du in die InitializeComponents() eingreifen und probieren, die nächste Änderung an der Form macht das rückgängig. Ich denke, die Reihenfolge ist nicht relevant.
    Probiere, die Controls im Code zu erstellen und zu positionieren.

    Ruerte schrieb:

    ein Bild über mehrere Controls "Drüber" zeichnen
    Male es im Designer drüber und arbeite dann mit Visible = True und Visible = False, musst Du ausprobieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Schamash wie genau meinst du das?

    RodFromGermany schrieb:

    Ruerte schrieb:
    ein Bild über mehrere Controls "Drüber" zeichnen
    Male es im Designer drüber und arbeite dann mit Visible = True und Visible = False, musst Du ausprobieren.

    Wie du meinen ?(
    Schau dir mal das Bild an, ich möchte halt das man in dem fall den Button2 nicht mehr sehen kann.

    VB.NET-Quellcode

    1. Dim myGraphics As Graphics = Graphics.FromHwnd(Me.Handle)
    2. myGraphics.Clear(Me.BackColor)
    3. myGraphics.DrawImage(My.Resources.mc, 1, 1)
    4. myGraphics = Nothing


    LG Ruerte
    Bilder
    • Unbenannt.PNG

      43,17 kB, 467×179, 130 mal angesehen
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Ruerte schrieb:

    Wie du meinen
    Missverständnis.
    Mach Dir eine neue Form mit diesem Bild drauf in der Größe der Hauptform und stell sie am Ort der Hauptform dar (per frm.Show() / frm.ShowDialog() anzeigen).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany entweder versteh ich nicht wie du es meinst oder du verstehst nicht was ich meine :?:

    Ich möchte zb:

    realisieren ohne dafür (wie in dem Beispiel der fall) 2x eine Picture box zu erstellen. (Das Graue ist ein Panel)
    wenn ich es normal per GDI zeichne schaut es so aus:

    (Ich möchte es halt nicht 2x zeichnen müssen)

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Ruerte schrieb:

    wenn ich es normal per GDI zeichne schaut es so aus:
    Gib mal dem Panel ausschließlich eine BackColor, da dürfte das nicht vor der Schrift liegen.
    Kannst Du das (Rahmen-) Projekt mal posten?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany anbei einmal ein Beispiel was ich schaffen möchte

    LG Ruerte
    Dateien
    • GDI+.zip

      (115,66 kB, 153 mal heruntergeladen, zuletzt: )
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Du versteht GDI+ etwas falsch:
    1. Man kann nicht über mehrere Windows -> Forms, Controls etc. mit einem einzigen Draw-Befehl zeichnen
    2. Graphics.FromHwnd ist gleich schlimm wie CreateGraphics - nutze bitte das Paint.Event
    3. Richtige Transparenz ist nur über Umwege erreichbar und nicht in WinForms eingebaut - nimm für sowas besser WPF.