kostenloser Webspace werbefrei: lima-city


C# Problem bei BackgroundImage und Referenz auf Resources

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    Hallo zusammen,

    ersteinmal ich benutze c# 2008 Express Edition.

    Ich habe eine Picturebox und ein Bild in die Resourcen geladen, nun möchte ich das BackgroundImage Attribut der PictureBox auf diese Resource setzen. Die Resource heisst "Schachbrett.gif".
    Wie weise ich das nun zu?

    Ich habe schon:
    pictureBox1.BackgroundImage = SimpleShapeBackGroundImageCS.Properties.Resources.Schachbrett.gif;
    und
    pictureBox1.BackgroundImage = My.Resources.Schachbrett.gif;
    probiert doch bei beiden erhalte ich den Fehler, dass entweder "SimpleShapeBackGroundImageCS" oder "My" im aktuellen Context nicht vorhanden ist...

    private void Schach_Load(object sender, EventArgs e)
            {
                pictureBox1.BackgroundImage = SimpleShapeBackGroundImageCS.Properties.Resources.Schachbrett.gif;
            }



    Desweiteren habe ich nun ein Object "Figur":
    Hier mal der Code:
    public class Figur
        {
            private int intMoves;                       // Anzahl bisherige Züge
            private bool blFarbe;                       // True = Weiss || False = Schwarz
            private int[] intPosition = new int[2];     // Position
    
            public void Figur(bool blFarbe, int[] intPosition)
            {
                this.intMoves = 0;
                this.blFarbe = blFarbe;
                setPosition(intPosition);
            }
    
            public void setPosition(int[] intPosition)
            {
                this.intPosition[0] = intPosition[0];   // Neues x
                this.intPosition[1] = intPosition[1];   // Neues y
            }
    
            public int getMoves()
            {
                return intMoves;
            }
    
            public void setMoves()
            {
                intMoves++;
            }
    
            public int[] getPosition()
            {
                return this.intPosition;                // Return Position
            }
        }


    Nun möchte ich natürlich bei jedem Object noch eine Referenz auf das dazugehörende "Bild" von den Resourcen dazu speichern.
    Welchen Datentyp muss ich verwenden oder wie mache ich dies am besten?

    Gruss
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. d************h

    nutz doch einfach den designer von microsoft.
    picturebox anklicken -> eigenschaften -> backgroundimage -> auf "..." klicken -> dialog öffnet sich -> bild auswählen -> ok -> fertig
  4. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    Dies ist nicht möglich, da ich den Hintergrund bei bestimmten Aktionen ändern muss...
  5. e********l

    fr3z3r schrieb:
    Dies ist nicht möglich, da ich den Hintergrund bei bestimmten Aktionen ändern muss...

    Es wäre aber eine ideale Grundlage. Denn du müsstest nur den Basiscode entsprechend anpassen bzw. von außen dann das Bild wechseln.

    Von welcher Instanz werden deine Grafiken denn geladen? Vom Form(1) oder von einem separaten Loader?
  6. ich verstehe zwar dein Problem nicht ganz, aber eine einfache zuweisung von einem Bild auf eine picturebox musst du über:
    pictureBox1.Image = "FullName"

    bsp:

    pictureBox1.Image = ""+ Directory.GetCurrentDirectory()+"Schachbrett.gif";

    falls du ein Bild nur "Laden" möchtest, musst du die Methode Load(pfad) gebrauchen.

  7. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    daevu2k69 schrieb:
    ich verstehe zwar dein Problem nicht ganz, aber eine einfache zuweisung von einem Bild auf eine picturebox musst du über:
    pictureBox1.Image = "FullName"

    bsp:

    pictureBox1.Image = ""+ Directory.GetCurrentDirectory()+"Schachbrett.gif";

    falls du ein Bild nur "Laden" möchtest, musst du die Methode Load(pfad) gebrauchen.




    Genau das mein ich...
    Nur bei
    pictureBox1.Image = ""+ Directory.GetCurrentDirectory()+"Schachbrett.gif";
    bekomme ich den Fehler: Der Name Directory ist im aktuellen Context nicht vorhanden... Daher meine Frage wie ich auf die Resoucren zugreifen kann...
  8. using System.IO;

    danach wäre DIESER fehler behoben, vielleicht kriegste jetzt einen neuen, posten plz :-)
  9. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    So mit using System.io gehts schon einmal ein Schritt weiter:
    Bei
    pictureBox1.Image = "" + Directory.GetCurrentDirectory() + "Schachbrett.gif";
    bekomme ich noch den Fehler das ein String nicht in ein System.Drawing.Image umgewandelt werden kann...

    Dann hab ich mir gedacht mach ich halt ein
    pictureBox1.Image = Bitmap.FromFile("" + Directory.GetCurrentDirectory() + "Schachbrett.gif");
    draus aber auch das funktioniert nicht und bricht mit einer File not Found exeption ab.
  10. e********l

    In welchem Verzeichnis liegt denn die Schachbrett.gif Datei? Vielleicht fehlt aber auch einfach nur der BackSlash am Ende des Pfads, denn afaik liefert GetCurrentDirectory() selbigen ohne Backslash zurück.
  11. string strImgPath = Directory.GetCurrentDirectory() + @"\Schachbrett.gif";
    Bitmap bmpTemp = new Bitmap(strImgPath);
    
    pictureBox1.Image = bmpTemp;


    kannst natürlich mit "if(File.Exists(strImgPath))" noch überprüfen ob dein "Schachbrett.gif" auch wirklich existiert, falls nicht, solltest du überprüfen ob sich die Datei Schachbrett.gif auch wirklich mitkopiert, und vielleicht mal manuell in den bin/debug ordner kopieren.

    Beitrag zuletzt geändert: 17.9.2009 10:58:17 von daevu2k69
  12. Autor dieses Themas

    fr3z3r

    fr3z3r hat kostenlosen Webspace.

    Genau das wars...
    Hab nun die Grafiken manuell kopiert und nun greif ich
    string strImgPath = Directory.GetCurrentDirectory() + @"\Grafiken\Schachbrett.gif";
                Bitmap bmpTemp = new Bitmap(strImgPath);
    
                pictureBox1.Image = bmpTemp;

    darauf zu.

    Danke an alle
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!