Gelöst: Image ändern zur Laufzeit

  • VB.NET

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

    Gelöst: Image ändern zur Laufzeit

    Hallo alle,

    Ich hab ein Problem, das sicher einfacher zu lösen ist als ich denke :) Ich möchte ganz einfach zur Laufzeit einer ImageBox ein Bild aus einem Ressourcenfile zuweisen. Wenn ich das hardcode funktioniert es auch:

    Quellcode

    1. picHand1.Image = SSS_Advisor.My.Resources.CardC04


    Wenn ich aber den letzten Teil (CardC04) variabel halten will, dann muss ich mir ja als erstes den String zusammenbauen. Das klappt auch. Aber wenn ich den dann zuweisen will, kommt die Fehlermeldung

    "Value of type 'String' cannot be converted to 'System.Drawing.Image'"

    Was mache ich falsch?

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

    Ja, im Resourcenfile sind sie drin. Wenn ich sie manuel anwähle klappt es ja auch. Aber leider geht auch ImageLocation nicht. Kommt zwar kein Fehler (auch nicht im Code-Fenster), aber das Pic wird nicht angezeigt :(

    VB.NET-Quellcode

    1. strPic = "My.Resources.Resources." & strPic
    2. picHand1.ImageLocation = strPic
    Das hab ich probiert. Es klappt ja auch, wenn ich den Befehl direkt eingebe. Also so:

    VB.NET-Quellcode

    1. picHand1.Image = My.Resources.CardC04


    Genauso wird es auch in allen Beispielen, die ich gefunden habe, gezeigt. Mein Problem ist eben nur, dass der letzte Teil Variabel ist. Und ich kann nicht glauben, dass ich da mit einer 52-fachen IF Clause arbeiten soll, wenn ich ein ganzes Kartendeck anzeigen will :)
    Hab jetzt ne Lösung gefunden :)

    Ich hab ne Funktion, die mir als Resultat die Bezeichnung des Bildes zurückgibt:

    VB.NET-Quellcode

    1. Private Function GetPicture(ByVal Bildnummer As String) As System.Drawing.Image
    2. Select Case Bildnummer
    3. Case "CARDH01"
    4. Return My.Resources.Resources.CardH01
    5. Case "CARDH13"
    6. Return My.Resources.Resources.CardH13
    7. Case Else
    8. Return My.Resources.Resources.CardH01
    9. End Select
    10. End Function


    Und diese wird dann beim Bild aufgerufen:

    VB.NET-Quellcode

    1. strCard = GetCard()
    2. picHand1.Image = GetPicture(strCard)


    So funzt es.