Kare kiremit platform oyunu için 2d harita editörüyordum, bir resim editörünü yan yana pikselleri yeniden boyamak için yetenekleri olan bir resim editörü kullanabileceğimi fark ettim ve bu yüzden bir boyalı seviye okumayı denemeliyim. Daha sonra onu bir lightweigh formatına dönüştürecek olan uygulama.Görüntü piksellerinin değerlerini RGB olarak 2d dizisine nasıl okuyabilirim?
Böyle bir şey için bir bitmap biçimi kullanmanın zorunlu olup olmadığından emin değilim, ancak belirli bir pikseli okumak örneğin PNG'den daha kolay olurdu.
Bu nedenle amacım bir görüntü açmak, her pikselde yinelemek, döşeme düzenime uyan renklerin aramasını ve ilgili döşeme bloğunu blok dizisine yerleştirmektir.
Not: Işığım ilerletme formatım zaten var, bu yüzden piksel değerlerini yalnızca diziye okumaya ihtiyacım var.
Çözüm: Benim kroki şöyle görünür:
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
}
}
Örnek 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;
}
}
}
}
Yan not: Dizelerdeki anahtar/kasa değeri yoktur. Dahili olarak sadece dizi karşılaştırır. Sadece gerçek RGB değerlerini karşılaştırmak, yüklerin daha verimli olmasına bağlıdır. – Nyerguds
@Nyerguds bu yıllar önceydi, bu yüzden neden böyle yaptığımı hatırlamıyorum. Eminim bu konuda herşeyi yapmanın çok daha iyi bir yolu vardır, ve bugün yaptığım her türlü sorunu çözmem gerekirse, kod tamamen farklı olurdu. – user1306322
Hehe. Eski kodlara baktığımızda genellikle bu şekilde gidiyor, sanırım :) – Nyerguds