Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[C#] string naar Resource reference

Pagina: 1
Acties:
  • 611 views sinds 30-01-2008
  • Reageer

  • siepeltjuh
  • Registratie: Maart 2003
  • Niet online
In de resource manager staan 27 images:

111.png -> _111
112.png -> _112
113.png -> _113
121.png -> _121
122.png -> _122
Etc.

Nu krijg ik 3 strings -1 , 0 of 1 die ik moet vertalen naar het plaatje uit de resouce.

Het plaatje laad ik voor verder verwerkening als volgt:
code:
1
Image FeebBackImage = Resource._111;


Probleem is dat er 27 plaatjes zijn ( 3x3x3 )
Voor het omrekenen van de 3 strings naar het feitelijke plaatje heb ik een methode gemaakt. Maar die bestaat dus uit 3 switch statements die elk 3 lagen diep gaan om het uiteindelijk plaatje te krijgen.
Dat is wel spuug en spuug lelijk. Die statement om van een string (111) te komen tot Resource._111 kost me dus een paar honderd regels.

Dat moet toch veeeeel eenvoudiger kunnen. ?!

Zelf zit ik de hele tijd te koekeloeren naar recursie, daarmee heb ik dan wel de -1 0 en 1 omgezet naar 123, maar hoe dat te gebruiken aangezien Resources geen array heeft met resources waar je door kan lopen of een Hasitem of whatever op kan uitvoeren.

Can`t live without the mods


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 25-11 23:28
Tip: Kijk eens naar de Resource.designer.cs file... ;)
Daarin wordt voor jou de code gegenereerd die ervoor zorgt dat je er direct met een property bij kunt. Je kunt namelijk ook met de ResourceManager class bij je (embedded) resources...

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 00:17
Ik snap niet helemaal wat nu het probleem is? Is het het omzetten van die -1,0,1 strings(?) naar dat getal of kun je de images niet 'on demand' laden?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Als ik het goed begrijp moeten de getallen -1, 0 en 1 omgezet worden naar een 1, 2 en een 3. Dus:

-1 -> 1
0 -> 2
1 -> 3

Simpelste is om gewoon de string om te zetten naar een integer en daar 2 bij op tellen.
Vervolgens plak je die 3 integers achter elkaar en zet je er een '_' voor. Dan heb je de naam van de resource.

Bijv:

C#:
1
2
3
4
5
6
7
8
9
10
11
public static string ConvertResourceName(string s1, string s2, string s3)
{
     int i1 = Convert.ToInt32(s1);
     int i2 = Convert.ToInt32(s2);
     int i3 = Convert.ToInt32(s3);
     i1 += 2;
     i2 += 2;
     i3 += 2;

     return string.Format(CultureInfo.InvariantCulture, "_{0}{1}{2}", new object[] { i1, i2, i3 });
 }


Vervolgens kan je de plaatjes op deze manier uit het resource bestand halen:
C#:
1
2
3
string resName = ConvertResourceName("-1", "0", "1");
ResourceManager resMan = new ResourceManager(typeof(MyResources));
Image image = (Image)resMan.GetObject(resName );


Is dat wat je bedoeld?

[ Voor 12% gewijzigd door Face_-_LeSS op 08-12-2007 19:34 . Reden: typo, opmaak ]


  • siepeltjuh
  • Registratie: Maart 2003
  • Niet online
Het omzetten is natuurlijk een eitje van ene naar andere strings, dat is het punt niet. Het ging om het ophalen uit de resource manager. Dat viel dus nog dik mee :)

Vervolgens kan je de plaatjes op deze manier uit het resource bestand halen

Dat was het!

Can`t live without the mods