Hi Leute, ich komme einfach nicht dahinter, wie ich überprüfen kann ob eine bestimmte Bildresource(im Projekt enthalten) in der Picturebox angezeigt wird. Wenn ich z. b.:
if Picturebox1.Image = Projekt.My.Resources.Resource1.b0 then 'b0 ist ein .PNG- Bild
versuche dann kriege ich den Fehler:
Fehler 2 Der =-Operator ist für die Typen "System.Drawing.Image" und "System.Drawing.Bitmap" nicht definiert.
Hat jemand eine Idee wie ich das ohne zusätzliche(selbstdefinierte) Variablen hinbekommen könnte? Bzw. gibt es eine Property die man abgleichen kann, die bei jedem Bild/ jeder Resource variiert?
Hey danke für deine Antwort aber: Fehler 3 "Name" ist kein Member von "System.Drawing.Image". Fehler 4 "Name" ist kein Member von "System.Drawing.Bitmap".
Das casten in VB geht n bissle anders. Picturebox1.Image = CType(Projekt.My.Resources.Resource1.b0, Image)
Sollte aber dennoch nicht gehen, man muss hier die Auflösung, den Alphawert... miteinander vergleichen, oder aber man vergibt halt den Bildern einen Namen und vergleicht diesen, ich glaube die Property "Tag" gesehen zu haben, mit dem das dann vielleicht möglich ist.
Ist vielleicht ein bisschen spät für eine Antwort aber falls du das Problem noch immer hast hätte ich evtl eine Lösung für dich/euch. Habe es in C# folgendermaßen gelöst:
Image VergleichsImage = new Image(); VergleichsImage = Properties.Resources.MeinImage;
if(Picturebox1.Image == VergleichsImage) { //Images sind gleich! }
Ich kenne mich mit der Syntax von VB.Net nicht zu 100% aus aber ich denke das würde dann so aussehen:
if PictureBox1.Image = VergleichsImage Then //Images sind gleich! End if
Für den VB Code kann ich nicht garantieren dass er richtig ist, aber bei mir hat das wie beschrieben mit C# 100%ig geklappt.
Ich glaube dass es daran liegt wenn man sich ein Objekt aus einer Resource anlegt wird immer ein neues Objekt angelegt und die der Vergleich mit == bzw. der .Equals-Methode vergleicht immer nur die Objektreferenz und nicht das Image Objekt das dahinter ist.