Form Hintergrundbild mit mehreren Bildern füttern

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Ninjamon.

    Form Hintergrundbild mit mehreren Bildern füttern

    Hallo liebe VB-Paradise Community,

    ich bin relativ neu was das Programmieren angeht, habe jedoch vor kurzem damit angefangen ein eigenes Programm zu schreiben.

    Trivia
    Bisher lief alles reibungslos und ich konnte mit dem während meines Praktikum erlangten Wissen sehr gut vorankommen. Mein Programm hat mitlerweile schon eine schöne Oberfläche und die Grundfunktion ist ebenfalls fertig.
    /Trivia

    Nun zu meinem Problem: Ich würde gerne einen Hintergrund für das Programm bauen, welcher abhängig von fünf Comboboxen jeweils anders zusammengesetzt werden soll. Am Anfang sind die Comboboxen leer, können dann aber mit zZ. 114 Werten gefüllt werden (Zahl wird im Laufe der Zeit ansteigen). Jeder Wert der Combobox soll also ein Bild eingehängt bekommen, welches dann in den Hintergrund geladen wird, wenn dieser Wert ausgewählt wurde. Leider habe ich bisher im Internet keine brauchbaren Informationen dazu gefunden, ob man den Hintergrund der Form irgendwie aufteilen und dann einzeln befüllen kann.
    Falls also jemand eine Hilfestellung hätte bzw. weiß wie man das ganze lösen kann (ich würde mich schon mit Ansätzen zufrieden geben, da ich ja auch aus der Sache lernen möchte), so würde ich herzlich um eine Antwort bitten.


    Schonmal vielen Dank im Voraus und liebe Grüße

    Ninjamon
    Das mit 114 Werte habe ich zwar nicht ganz verstanden aber das was du bewerkstelligen willst geht eigendlich ganz einfach mit einer Bitmap und bissl GDI+ zum zeichnen der ausgewählten Bilder. Falls du noch nicht mit GDI+ gearbeitet hast kannst du dir GDI+ Tutorial anschauen ;)
    @Ninjamon: Willkommen im Forum. :thumbup:
    Das Hintergrundbild ist ein Bild, das Du in mehreren Modi anzeigen kannst.
    Mehrere Bilder kannst Du nicht gleichzeitig parallel darstellen, Du müsstest Dir ein zusammengesetztes Bild erzeugen. Dazu gibt es 2 Möglichkeiten:
    1. Gestalte Deinen Hintergrund per Paint selbst, wie es @davut: vorgeschlagen hat
      oder
    2. erzeuge Dir dynamisch eine Bitmap, die Du je nach Erforderniss gestaltest, die Du danach einfach der BackgroundImage-Property zuweist:

      VB.NET-Quellcode

      1. Private bmp As Bitmap
      2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
      3. bmp = New Bitmap(...)
      4. ' das Bild gestalten
      5. Me.BackgroundImage = bmp ' und zuweisen
      6. 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!
    Und noch etwas: Es ist nicht einfach.

    Das mit den mehreren Comboboxen scheint mir auf komplex zusammengesetzte Optionen hinauszulaufen, und evtl. willst du die Optionen auch Speichern.

    Da musst du erst noch reichlich konzipieren:
    • Soll jede Combo "eigene" Bilder anbieten, oder alle Combos aus demselben Fundus schöpfen?
    • Wie soll so ein Fundus aussehen? Denkbar wäre ein oder mehrere Datei-Ordner mit Bild-Dateien
    • was heißt "zusammensetzen" - wie zusammensetzen: Nebeneinander, übereinander, einander überdeckend......???


    Ach guck - ich hab ja schon was, was wenigstens mit einer Combobox funzt. Es ist zwar eine Listbox, aber Combo- und List-box sind austauschbar: Keine Strings in die File-Listbox!
    Hallo und vielen Dank für das Willkommen,

    ich glaube es wäre gut für das Verständnis, wenn ich euch mal kurz mein Programm zeige und erkläre:
    Mein Programm hat vor ein Theorycrafting Programm für League of Legends zu werden. Ich habe fünf Comboboxen für die fünf Spieler eines Teams und jede dieser Comboboxen kann mit einem der momentan 114 bestehenden Charaktere befüllt werden. Je nach Auswahl in den Boxen werden in Groupboxen, welche verschiedene Kriterien des Spiels abdecken Werte addiert oder subtrahiert. Nachdem man alle fünf Charaktere (oder auch drei falls man Twisted Treeline spielen will) ausgewählt hat, sieht man in den Groupboxen wieviele Skills es in dem zusammengestellten Team zu einzelnen Kriterien gibt (zum Beispiel (für die, denen LoL ein Begriff ist): Ahri + Sona + Sion = 2 Solo-target (Charm von Ahri + Cryptic gaze von Sion) + 1 Multi-target hard CC (Crescendo von Sona)).
    Nun habe ich mitlerweile eine Alpha von diesem Programm an Freunde gegeben, damit diese die Daten zu den einzelnen Champions testen und Vorschläge zur Verbesserung bringen und dabei haben viele gesagt, dass ihnen der Hintergrund zu fad' ist. Daraufhin kam mir die Idee, dass ich die Championbilder wie sie z.B. bei den Shanghai Allstars während der Championauswahl für die Zuschauer zu sehen waren (Bild im Anhang) nutzen könnte um den Hintergrund aufzuwerten. Dazu habe ich dann geplant Den Hintergrund in fünf nebeneinanderliegende Teile zu zerlegen und dann jeden Teil (links Toplaner, 2. links Jungler, Mitte Apc, 2. rechts Adc, rechts Support) mit dem Bild des ausgewählten Champions zu füllen.

    Falls ihr Probleme habt euch das ganze bildlich vorzustellen, dann könnt ihr die Alpha im Anhang downloaden (bitte nicht weitergeben, denn es ist wie gesagt nur 'ne Alpha und ich werde den Download später entfernen)

    Vielen Dank für die bereits versuchten Anworten und hoffentlich kann mir jemand von euch helfen.


    Mit freundlichen Grüßen

    Ninjamon
    Bilder
    • Picks.jpg

      142,37 kB, 1.118×628, 107 mal angesehen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Ninjamon“ ()

    Deine Links sind unfreundlich (Werbung, ungewollte IE / FF-Instanzen), Bilder kannst Du auch im Forum selbst anhängen (==> Dateianhänge).
    Das ist Dein Programm, Du machst dafür das Design, gerne helfen wir Dir dabei. Aber Du triffst die entscheidungen, was Du tun und lassen musst, wir können Dich dabei nur beraten.
    Wenn Du Dein ganzes Programm "verrissen haben" möchtest, publiziere es im ShowRoom.
    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!
    vielen dank für den Überblick, und damit wäre meine 3.Frage aus post#4 auch beantwortet: nebeneinander sollen die Bildle anzeigen.
    Aber noch eine Frage dazu: Werden Controls auf den Bildle drauf liegen - also wirklich als Hintergrund-Bild?
    Oder kriegen die Bildle eine eigen Picturebox, wo man die hübschen richtig komplett angugge kann?

    Ja, und dann fehlen noch die 2 anneren Fragen aus Post#4.


    Wenn Du Dein ganzes Programm "verrissen haben" möchtest, publiziere es im ShowRoom.
    Und wenn du auch viel viel viel über Programmieren lernen willst, dann poste die Sources doch besser im SourceCode-Austausch.
    Das hat mehrere Vorteile
    • Der Showroom ist für die, die das Zeugs downloaden ein echtes Sicherheitsrisiko - eiglich ein Unding, lauffähige Dateien, erstellt von iwelchen Usern von ieinem Forum runterzuladen - also ich lade mir da nix von.

    • Die Runterlader haben nix davon: Im Showroom wird KnowHow zwar gezeigt, aber peepshow-mäßig: das Knowhow wird nicht geteilt (was ja eiglich Intention eines Forums ist).
      In meinen Augen wird dort vor allem Selbstbeweihräucherung und Wichtigtuerei gepflegt ("wow - ich bin CopyRight-Inhaber!!").
      Also kleinkarierter Egoismus - und Bill Gates mit seinem weltweiten CopyRight-Terror lacht sich ins Fäustchen, dass die Anfänger auch schon so anfangen.

    • Auch du hast nix wesentliches davon: vlt. bisserl Gemäkel oder Schulterklopfen zum Design, wennde hübsche Bildle ausgesucht hast, aber zur eigentlichen Code-Qualität kannst auch du da nix dazulernen

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

    Die Bilder sollen den Hintergrund ausfüllen, damit dieser nicht mehr so trist aussieht. Es werden also keine Pictureboxes benutzt (das hätte ich nämlich auch allein bewerkstelligen können^^)

    @RodFromGermany: Vielen Dank für die Info. Habs geändert und hoffe, dass es so besser ist.


    Liebe Grüße

    Ninjamon

    Ninjamon schrieb:

    Die Bilder sollen den Hintergrund ausfüllen
    Sieh Dir mal das an:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim bmp As New Bitmap(600, 400)
    3. Dim gr As Graphics = Graphics.FromImage(bmp)
    4. Dim b1 = New Bitmap("C:\Temp\Bild1.png")
    5. Dim b2 = New Bitmap("C:\Temp\Bild2.png")
    6. Dim b3 = New Bitmap("C:\Temp\Bild3.png")
    7. Dim b4 = New Bitmap("C:\Temp\Bild4.png")
    8. Dim h = 100
    9. Dim w = 200
    10. gr.DrawImage(b1, New Point(0, 0))
    11. gr.DrawImage(b2, New Point(w, 0))
    12. gr.DrawImage(b3, New Point(0, h))
    13. gr.DrawImage(b4, New Point(w, h))
    14. Me.BackgroundImage = bmp
    15. End Sub
    Die Bilder musst Du bereitstellen, kann auch aus den Ressourcen sein, w und h musst Du Deinen Gegebenheiten anpassen.
    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 nochmal und danke an euch beide für die Hilfe! :)

    ErfinderDesRades schrieb:

    Und wenn du auch viel viel viel über Programmieren lernen willst, dann poste die Sources doch besser im SourceCode-Austausch.
    Ich wollte euch nur die Gelegenheit geben, dass ihr mein Programm und was es macht sehen könntet, falls ihr es für irgendetwas gebraucht hättet. Honig ums Maul geschmiert brauch ich nicht, ich weiß das mein Programm garantiert nicht erste Sahne ist, schließlich bin ich Anfänger und Kritik hole ich mir schon von meinen Alphatestern genug. Nächstes mal werde ich dann Teile meines Codes posten.

    Danke allerdings für das erklären dieser Sektion im Forum, vielleicht werde ich sie in der Zukunft mal benutzen.


    Liebe Grüße

    Ninjamon