Würfel-Grafik ändern
-
Hi
Ich probiere grade mit C# es hinzubekommen, dass wenn man auf einem Buttom drückt, dass man eine zahl zwischen 1-6 bekommt und die dazugehörige Würfel-Grafik angezeigt wird.(Genaugenommen 2 aba, wenn man eins hat, hat man ja auch das andere automatisch)
private void würfeln_Click(object sender, System.EventArgs e)
{
Random wu1, wu2;
int w1,w2;
wu1= new Random();
wu2= new Random();
w1= wu1.Next(6);
w2= wu2.Next(6);
switch(w1)
{
case 1:
Wuerfel1.Image=System.Drawing.Bitmap.FromFile("w1.gif");
break;
case 2:
Wuerfel1.Image=System.Drawing.Bitmap.FromFile("w2.gif");
break;
case 3:
Wuerfel1.Image=System.Drawing.Bitmap.FromFile("w3.gif");
break;
case 4:
Wuerfel1.Image=System.Drawing.Bitmap.FromFile("w4.gif");
break;
case 5:
Wuerfel1.Image=System.Drawing.Bitmap.FromFile("w5.gif");
break;
case 6:
Wuerfel1.Image=System.Drawing.Bitmap.FromFile("w6.gif");
break;
}
}nun will es jedoch nich, warum?
ich hab mir jetz die befehle eigentlich nur dahergereimt und bin schon fro, soweit zu kommen
w1.gif - w6.gif hab ich in mein project als ressourcen eingebunden.Bitte um Hilfe
-
Servus,
du könntest das so machen:
using System.Reflection; . . Assembly assembly = this.GetType().Assembly; Wuerfel1.Image = new Bitmap(assembly.GetManifestResourceStream("DeinProjekt.w6.gif")) as Image;
mfg
Hellsgore
-
hmm... leiter funktioniert das nich ;_;
Wuerfel1.Image = new Bitmap(assembly.GetManifestResourceStream("\\Bilder\\w1.gif")) as Image;
so hab ich es jetz probiert UND
Wuerfel1.Image = new Bitmap(assembly.GetManifestResourceStream("Monopoly.Bilder.w1.gif")) as Image;
Es kommt diese Bemerkung:
Informationen über das Aufrufen von JIT-Debuggen
finden Sie am Ende dieser Meldung, anstatt in diesem Dialogfeld.************** Ausnametext **************
System.ArgumentException: 'null' ist kein gültiger Wert für 'stream'.
at System.Drawing.Bitmap..ctor(Stream stream)
at Spiel.Spielbrett.würfeln_Click(Object sender, EventArgs e) in d:\projekte\monopoly\spielbrett.cs:line 192
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)************** Geladene Assemblys **************
mscorlib
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.2032
CodeBase: file:///c:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll
----------------------------------------
Monopoly
Assembly-Version: 1.0.2138.31943
Win32-Version: 1.0.2138.31943
CodeBase: file:///D:/Projekte/Monopoly/bin/Debug/Monopoly.exe
----------------------------------------
System.Windows.Forms
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.2032
CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.2032
CodeBase: file:///c:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
----------------------------------------
System.Drawing
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.2032
CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
System.Xml
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.2032
CodeBase: file:///c:/windows/assembly/gac/system.xml/1.0.5000.0__b77a5c561934e089/system.xml.dll
----------------------------------------
System.Drawing.resources
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.drawing.resources/1.0.5000.0_de_b03f5f7f11d50a3a/system.drawing.resources.dll
----------------------------------------
System.Windows.Forms.resources
Assembly-Version: 1.0.5000.0
Win32-Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.windows.forms.resources/1.0.5000.0_de_b77a5c561934e089/system.windows.forms.resources.dll
----------------------------------------************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.Zum Beispiel:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht von diesem Dialogfeld behandelt.
-
TEILERFOLG
pictureBox1.Image = ((System.Drawing.Image)(Image.FromFile("C:\\Bild.jpg")));
(hab dafür ein extra testprojekt gemacht)
Das Funktioniert schonmaljetzt kommt die frage:
wie kann ich die in der Projektmappe vorhandenen Bilder benutzen?edit:
Werden die Bilder in der exe mit kompiliert, die in den forms zu sehen sind?
-
Servus,
kleiner Crashkurs:
Du siehst dei Bilder jetzt im >>> SolutionExplorer <<<
Monopoly |- Form1.cs |- Assembly.cs |- Bla.cs |- Bilder |- w1.gif |- w2.gif |- w3.gif
liegen die Bilder in einem Unterordner mußt du den mit angeben.
Wuerfel1.Image = new Bitmap(assembly.GetManifestResourceStream("Monopoly.Bilder.w1.gif")) as Image;
Alle Bilder die du dem Projekt hinzugefügt hast müssen in ihrer Eigenschaft "Build Action" den Wert "Embedded Resource" aufweisen. d.h. Du klickst auf deine Bilddatei im SolutionExplorer mit der rechten Maustaste und wählst Properties aus. Den Eintrag "Build Action" wie oben beschrieben ändern.
Wenn du damit nicht zurecht kommst, dann schaue dir mal mit
Assembly assembly = this.GetType().Assembly; string assemblyName = assembly.GetName().Name;
den Namen an und füge ihn einfach dem ResourceString hinzu:
Wuerfel1.Image = new Bitmap(assembly.GetManifestResourceStream(assemblyName + ".Bilder.w1.gif")) as Image;
mfg
Hellsgore
-
Warum lädst du die Bilder bei jedem Mausklick neu? Das ist IMHO ineffizient. Normalerweise läd man Bitmap-Ressourcen nur einmal und zeigt sie dann je nach Situation an.
-
Übrigens: der Zahlenbereich bein Random.Next(6) geht nicht von 1 bis 6, sondern von 0 bis 5.
-
danke erstmal
1. da is n knopf zum würfeln. ok, man hätte auch so machen können, dass die images übereinander lagern und dann je nach bedarf alle bis auf den nötigen unsichtbar machen, aba so gefällt es mir eher
2. ja, dankeso....
danke, es hat funktioniert ____