| 

.NET C# Java Javascript Exception

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.2010
spicejam 853 2 6
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.2010
Konstantin 3,7k 8
höhö funktioniert. Coole Idee mit dem Compare über Hash. BIG THANNKKS
spicejam 08.02.2010
1
Ist es vielleicht nicht einfacher auf den Namen zu prüfen?

if Picturebox1.Image.Name = Projekt.My.Resources.Resource1.b0.Name
05.02.2010
Mario Priebe 6,0k 3 9
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.2010
Hmm, vielleicht hiflt dir dieser Artikel weiter: http://www.vbforums.com/showthread.php?t=412725
Mario Priebe 05.02.2010
1
Probiers mal mit equals
if Picturebox1.Image.Equals(Projekt.My.Resources.Resource1.b0) then "b0 ist ein .PNG- Bild"
05.02.2010
schulz3000 390 1 6
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.2010
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.2010
Blauesocke 637 2 8
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.2010
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.
19.04.2010

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH