Picturebox bei Klick Bild ändern

  • VB.NET

Es gibt 34 Antworten in diesem Thema. Der letzte Beitrag () ist von Mangafreak1995.

    Picturebox bei Klick Bild ändern

    Hey,
    ich würde gerne das Bild einer Picturebox beim ersten Klick in das Bild audio_off.png ändern und bei erneutem Klick wieder zu audio_on.png ändern...

    Wie kann ich das machen?

    Danke schonmal
    Zuerst die Bilder in den ressourcenmanager laden !
    Dann wählst du die picturebox in den eigenschaften aus, gehst auf events und dann auf MouseClick!
    Im codefenster tippst du dann unter dem clickevent diesen code ein

    Quellcode

    1. PictureBox1.Image = My.Resources.wiedasgewünschtebildheißt


    PictureBox1 musst du ggf. noch in den namen deiner picturebox umändern !

    mfg
    Hey,
    Danke für die schnellen Antworten. Ja ich möchte es wieder zurück ändern ...

    Wie ich ein Bild via Click ändere weiß ich ...
    Wenn ich das jetzt aber mit My.Resources mache kommt nur:

    Resources ist kein Member von My

    Muss ich da irgendetws deklarieren oder so?
    ihr vergesst immer das Else, wenn er beim ersten Click das Bild ändert, bleibt es ewig auf dem Zweiten Bild stehen und kann nicht zurückwechseln.

    VB.NET-Quellcode

    1. If PictureBox1.Image = My.Resources.ErsteBild Then
    2. PictureBox1.Image = My.Resources.ZweiteBild
    3. Else
    4. PictureBox1.Image = My.Resources.ErsteBild
    5. End If
    Hey,
    Danke für die vielen und schnellen Antworten ...

    Bei mir müsste es dann angepasst alles so aussehen:

    VB.NET-Quellcode

    1. If PictureBox11.Image = My.Resources.audio_on Then
    2. PictureBox11.Image = My.Resources.audio_off
    3. Else
    4. PictureBox11.Image = My.Resources.audio_on
    5. End If


    Allerdings unterstreicht er die 1. Zeile und meint:

    Der =-Operator ist für die Typen "System.Drawing.Image" und "System.Drawing.Bitmap" nicht definiert.

    Was kann ich dagegen tun?
    Backgroundimage? Eine Picturebox ist für Pictures = Bilder ;)
    Also ist Image schon richtig!

    Ich weiß gerade nicht, wie man das jetzt überprüfen kann, als not lösung würde ich jetzt einfach mal eine Boolean Variable vorschlagen:

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Dim bild1 As Boolean = True
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. If bild1 = True Then
    6. PictureBox11.Image = My.Resources.audio_off
    7. bild1 = False
    8. Else
    9. PictureBox11.Image = My.Resources.audio_on
    10. bild1 = True
    11. End If
    12. End Sub
    13. End Class

    sdcleitung schrieb:

    Hey,
    Danke für die vielen und schnellen Antworten ...

    Bei mir müsste es dann angepasst alles so aussehen:

    VB.NET-Quellcode

    1. If PictureBox11.Image = My.Resources.audio_on Then
    2. PictureBox11.Image = My.Resources.audio_off
    3. Else
    4. PictureBox11.Image = My.Resources.audio_on
    5. End If


    Allerdings unterstreicht er die 1. Zeile und meint:

    Der =-Operator ist für die Typen "System.Drawing.Image" und "System.Drawing.Bitmap" nicht definiert.

    Was kann ich dagegen tun?


    Hey,
    es ging jetzt hier um die Frage ... Deshalb verstehe ich nicht was du mir mit dem Code sagen willst ...
    Sry wenn ich mich täusche:

    VB.NET-Quellcode

    1. If PictureBox11.Image.Equals(My.Resources.audio_on) Then
    2. PictureBox11.Image = My.Resources.audio_off
    3. Else
    4. PictureBox11.Image = My.Resources.audio_on
    5. End If
    So nun hatte ich mehr Zeit.
    Wie ich gesagt habe, als BackgroundImage mit der Einstelleung Zoom. Dann hast du auch gleich die Reichtige größe ohne noch umwandeln zu müssem.

    VB.NET-Quellcode

    1. Private Sub AusResource()
    2. Dim MyImage As Bitmap = Nothing
    3. MyImage = My.Resources.Bild1
    4. If (MyImage IsNot Nothing) Then
    5. MyImage.Dispose()
    6. End If
    7. Try
    8. MyImage = New Bitmap(My.Resources.Bild1)
    9. Catch ex As Exception
    10. End Try
    11. PictureBox1.BackgroundImageLayout = ImageLayout.Zoom
    12. PictureBox1.BackgroundImage = CType(MyImage, Image) ' nimmst du es als Backgorund Image, hast du geleich Zoom z.Auswahl
    13. End Sub


    Und das nu in deine If Then Else eingebaut, und gut is.


    @ VCJunk: du hast ja recht mit dem was du sagst, aber je länger ich das Forum in betracht nehme. Die machen nur C&P. siehste doch in diesem Beispiel wieder sehr schön.
    Da kommt ein Fehler und die suchen nicht lange, und lesen schon garnicht.
    Hey,
    nicgenie
    Deine Lösung sieht einleuchtend aus, aber irgendwie funktioniert die bei mir nicht.
    Ich habe jetzt schon verschiedenes ausprobiert. Bei der besagten PictureBox steht bei Image:

    Programm.My.Resources.Resources.audio_on

    ich habe den Code jetzt auchschon in der 1. Zeile eingegeben statt des My.Resources.Resources.audio_on aber es funktioniert nicht.
    wenn ich den gesammten Code ändere in:

    VB.NET-Quellcode

    1. If PictureBox11.Image.Equals(My.Resources.Resources.audio_on) Then
    2. PictureBox11.Image = My.Resources.audio_off
    3. Else
    4. PictureBox11.Image = My.Resources.audio_off
    5. End If


    Dann ändert sich das Bild, also denkt es wohl das als Picture nicht My.Resources.Resources.audio_on, aber warum?

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

    Ich bin nicht blind ...
    aber du solltest den Beitrag vielleicht mal richtig lesen ...

    Wenn ich es darauf ändere das da zweimal off steht dann ändert sich das Bild von on zu off, d.h. das Programm denkt als Bild wäre nicht audio on geladen.

    Meine Frage war warum es das denkt?

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Image1 As Image = My.Resources.Blaue_Berge
    3. Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
    4. If (PictureBox1.Image Is Image1) Then
    5. PictureBox1.Image = My.Resources.Sonnenuntergang
    6. Else
    7. PictureBox1.Image = Image1
    8. End If
    9. End Sub
    10. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    11. PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize'optional
    12. PictureBox1.Image = Image1
    13. End Sub
    14. End Class


    so gehts(res pic namen anpassen;))

    gruss mono
    Das ist meine Signatur und sie wird wunderbar sein!