Hintergrundbild / Backgroundimage

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von JLH.

    Hintergrundbild / Backgroundimage

    Ich würde gerne das Hintergrundbild eines Panels über einen Radiobutton ändern. Ich habe etwas zu "System.Drawing.Bitmap" gefunden. Es gibt aber auch noch das "My.Resources.Resources...."
    Welche Optionen habe ich, wenn ich nicht zusätzlich zur EXE noch sämtliche Bilder in den Programm Ordner packen will? Geht das überhaupt? Das eine Bild ist ja auch nicht seperat gespeichert und befindet sich in der EXE. Ich verwende das .NET weil ich die EXE die beim Debuggen erstellt wird so leicht auf andere Rechner kopieren kann. Wenn ich jetzt noch vorher Pfade einrichten muß wäre das nicht mehr so toll.
    @JLH Das hier geht alles.
    Allerdings solltest Du darauf achten, das BackgroundImage zu disposen, wenn es aus einer Datei erstellt wurde.

    VB.NET-Quellcode

    1. Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged
    2. Panel1.BackgroundImage = My.Resources.Adler
    3. End Sub
    4. Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged
    5. Panel1.BackgroundImage = Image.FromFile("D:\Temp\Kupferstich.jpg")
    6. End Sub
    7. Private Sub RadioButton3_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton3.CheckedChanged
    8. Panel1.BackgroundImage = New Bitmap("D:\Temp\IMG-20230806.jpg")
    9. End Sub
    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!
    Hallo @JLH,
    wie du das Bild geladen bekommst, hat RodFromGermany dir schon gezeigt.
    Ich möchte hinzufügen: du kannst im Designer des Forms prüfen, ob das Bild gestretcht werden soll oder ob es im Original belassen werden soll (BackgroundImageLayout = None). Wenn es original bleiben soll, würde ich vorschlagen, du schneidest es mit einem Bildbearbeitungsprogramm vorher zurecht, sonst gibt es Pixel, die nicht gezeigt werden, was nicht sein muss. Außerdem braucht man nicht eine 5MB-Datei in ein 120-px-mal-60-px-Panel laden.



    Dispose of geht so:

    VB.NET-Quellcode

    1. If MenuPanel.BackgroundImage IsNot Nothing Then
    2. MenuPanel.BackgroundImage.Dispose()
    3. MenuPanel.BackgroundImage = Nothing
    4. End If
    Vielen Dank! Das probiere ich heute gleich aus.



    Ich habe mich für die Version mit den Resources entschieden. Wie kann man da Einträge löschen ohne, daß man dann mit Fehlern konfrontiert wird? Das Bild wird zwar aus dem Odner gelöscht aber die Einträge in der Resources.resx nicht. Mach ich da was falsch?

    Beiträge zusammengefügt. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    JLH schrieb:

    Wie kann man da Einträge löschen
    Zuerst in den Projekteigenschaften-Ressources,
    dann im Quellcode, wo darauf zugegriffen wird,
    dann neu compilieren (wichtig!),
    dann kannst Du im Projektmappenexplorer die Datei löschen.
    Nun sollte alles fehlerfrei compilieren.
    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!