Entwickler-Ecke

Sonstiges (.NET) - PictureBox : bild aus Ressourcendatei einfügen : Kniffel


darkangel1208 - So 29.11.09 17:15
Titel: PictureBox : bild aus Ressourcendatei einfügen : Kniffel
Ic hhabe mir ein pictureBox array gemacht in den meine 5 Picturboxen sind (dices[5])

Nun will ich aus der Ressourcendatei ein Bild einfügen lassen. Wenn ich den namen (_1) direkt angebe geht es, aber ich habe den Namen in einem String-Array würfel gespeichert und will nun den Arrayplatz angeben. Der einfachheithalber habe ich den Bildern die namen 1,2,3 ect verpasst.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
würfel = new String[6] { "_1""_2""_3""_4""_5""_6" };
for(int i = 0; i < 5; i++)
{
rollen[i] = rnd.Next(17);
// aus
dices[i].BackgroundImage = global::Kniffel1.Properties.Resources._1;
// soll werden
dices[i].BackgroundImage = global::Kniffel1.Properties.Resources.würfel[Convert.ToString(rollen[i-1])];
// welches Bild ich dort angezeigt haben möchte ist in rollen[i] gespeichert
}

Er meckert aber Fehler "Kniffel1.Properties.Resources" enthält keine Definition für "würfel".


Kha - So 29.11.09 17:47

Der einfachste Weg dürfte sein, für die Images ebenfalls ein Array anzulegen:

C#-Quelltext
1:
var images = new Image[] { Resources._1, Resources._2, ... }                    


darkangel1208 - So 29.11.09 19:00

naja ich hatte jetzt nur ein Array angelegt, das nur die namen der Bilder enthält. aber ein Array anzulegen das das komplette Bild enthält, auf die Idee bin ich nicht gekommen.

aber irgendwie klappt das noch net so recht, was du mir da an die Hand gegeben hast.

bist du sicher das das so gemeint ist?


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var images = new Image[] { Resources._1, Resources._2, ... }
// bzw
var images = new Image[2] { Resources._1, Resources._2 }
// das nimmt er wohl, würde aber mein problem nicht lösen
var images = new Image[] { global::Kniffel1.Properties.Resources._1  };

//aber dann leider weiter unten nicht mehr
dices[i].BackgroundImage = images[0];


//Ich will ja an die Stelle _bild das bild laden [mit namen 1, 2 ect ( 1.jpeg,2.jpeg )] das sich als Zahl in rollen[i] versteckt (rollen[i]= z.B. 1 oder 2)
dices[i].BackgroundImage = global::Kniffel1.Properties.Resources._bild;
dices[i].BackgroundImage = global::Kniffel1.Properties.Resources.würfel [ Convert.ToString ( rollen[i-1] ) ];


Kha - So 29.11.09 19:09

user profile icondarkangel1208 hat folgendes geschrieben Zum zitierten Posting springen:
bist du sicher das das so gemeint ist?
Japp :D . Mit einem using Kniffel1.Properties solltest du dir diese schrecklichen Präfixe sparen können.
user profile icondarkangel1208 hat folgendes geschrieben Zum zitierten Posting springen:

C#-Quelltext
1:
//aber dann leider weiter unten nicht mehr                    
Was willst du mir damit sagen? Wenn du das Array nur einmal, also z.B. im Form-Konstruktor, anlegen willst (was sicherlich sinnvoll wäre), darfst du es nicht in eine lokale Variable speichern, sondern musst ein Klassenfeld benutzen.


MoBBer - So 29.11.09 19:29

So wie Kha es geschrieben hat funktioniert es einwandfrei. Hab es hier an einem kleinen Beispiel ausprobiert.
Läuft wunderbar.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using WindowsApplication1.Properties;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        Image[] bilder = new Image[2] {Resources._1, Resources._2 };
        public Form1()
        {
            InitializeComponent();

            PictureBox[] pbxe = new PictureBox[2] { this.pictureBox1, this.pictureBox2 };
            Random zufall = new Random();
            for (int i = 0; i < 2; i++)
            {
                pbxe[i].BackgroundImage = this.bilder[zufall.Next(02)];
            }            
        }
    }
}


mfG MoBBer


darkangel1208 - So 29.11.09 19:53

ja ok jetzt gehts. mir ist irgendwie das

using Kniffel1.Properties;

durch die Lappen gegangen.
Danke das hat mein Leben gerettet.