.NET C# Java Javascript Exception

 | 
Frage stellen Fragen Themen Mitglieder Abzeichen RSS-Feed
2
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?

Danke im voraus
05.02.10
spicejam 343 1 5
Kommentieren - Für Rückfragen oder Anmerkungen
5 Antworten
2
Eventuell hilt dir das hier?
http://www.dreamincode.net/code/snippet2859.htm

Dann nur noch hier drüberlaufen lassen =)
http://codeconverter.sharpdevelop.net/SnippetConverter.aspx
08.02.10
Konstantin 66 2
höhö funktioniert. Coole Idee mit dem Compare über Hash. BIG THANNKKS
spicejam 08.02.10
1
Ist es vielleicht nicht einfacher auf den Namen zu prüfen?

if Picturebox1.Image.Name = Projekt.My.Resources.Resource1.b0.Name
05.02.10
Mario Priebe 1,3k 1 7
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".
spicejam 05.02.10
Hmm, vielleicht hiflt dir dieser Artikel weiter: http://www.vbforums.com/showthread.php?t=412725
Mario Priebe 05.02.10
1
Probiers mal mit equals
if Picturebox1.Image.Equals(Projekt.My.Resources.Resource1.b0) then "b0 ist ein .PNG- Bild"
05.02.10
schulz3000 71 1 3
Ne, leider auch nicht. Er gibt mir immer den Wert "False" zurück. Aber danke für den Tipp kann man anderweitig verwenden.
spicejam 05.02.10
1
Hast du schonmal versucht, einen der beiden Parameter zu casten? Ungetestet, frei nach dem Motto:

Picturebox1.Image = (Image)Projekt.My.Resources.Resource1.b0
05.02.10
Blauesocke 563 1 6
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.
Mario Priebe 07.02.10
0
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:

Dim VergleichsImage As Image

VergleichsImage = Projekt.My.Resources.Resource1.b0

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.
Deine Antwort
Entweder einloggen... ...oder ohne Wartezeit registrieren
Name
Passwort
Passwort wiederholen
E-Mail
Geworben von


Login mit OpenID

Mit einem OpenID-Account kannst Du dich auf allen Webseiten anmelden, die OpenID unterstützen. Du hast bereits ein Benutzerkonto bei einem der folgenden Provider? Dann kannst Du dich direkt hier damit registrieren.


OpenID-Provider anklicken: