Stavo realizzando un editor di mappe 2D per il mio gioco platform di piastrelle quadrate, quando ho realizzato che potevo davvero usare un editor di immagini con le sue capacità di ridisegnare pixel adiacenti e molti altri, quindi ho pensato di provare a leggere un livello dipinto da un app che convertirà quindi in un formato lightweigh.Come posso leggere i valori dei pixel dell'immagine come RGB nell'array 2d?
Non sono sicuro che l'utilizzo di un formato bitmap sia obbligatorio per tale scopo, ma suppongo che la lettura di un pixel specifico sia più semplice che con PNG, ad esempio.
Quindi il mio obiettivo è aprire un'immagine, scorrere tutti i pixel, cercare quelli che corrispondono al mio schema di tessere e inserire la tessera corrispondente nella serie di blocchi.
Nota: ho già il mio formato lightweigh, quindi ho bisogno di leggere solo i valori dei pixel nell'array.
Soluzione: mio disegno si presenta così:
Bitmap myBitmap = new Bitmap(@"input.png");
for (int x = 0; x < myBitmap.Width; x++)
{
for (int y = 0; y < myBitmap.Height; y++)
{
Color pixelColor = myBitmap.GetPixel(x, y);
// things we do with pixelColor
}
}
Esempio 2:
Bitmap myBitmap = new Bitmap(@"input.png");
for (int x = 0; x < myBitmap.Width; x++)
{
for (int y = 0; y < myBitmap.Height; y++)
{
// Get the color of a pixel within myBitmap.
Color pixelColor = myBitmap.GetPixel(x, y);
string pixelColorStringValue =
pixelColor.R.ToString("D3") + " " +
pixelColor.G.ToString("D3") + " " +
pixelColor.B.ToString("D3") + ", ";
switch (pixelColorStringValue)
{
case "255 255 255":
{
// white pixel
break;
}
case "000 000 000":
{
// black pixel
break;
}
}
}
}
Nota a margine: l'interruttore/caso sulle stringhe non ha valore. Internamente è solo una comparazione di stringhe. Il semplice confronto dei valori RGB reali è destinato ad essere più efficiente. – Nyerguds
@Nyerguds questo era anni fa quindi non ricordo perché l'ho fatto in quel modo. Sono sicuro che c'è un modo molto migliore per fare tutto in questa domanda, e se dovessi risolvere qualunque problema avessi allora, oggi, il codice sarebbe completamente diverso. – user1306322
Hehe. Questo è il modo in cui di solito va guardando al vecchio codice, immagino :) – Nyerguds