Как мне цвет ключа, в C #, в XNA? - PullRequest
1 голос
/ 31 марта 2011

Я начал с небольшой игры и скачал несколько замечательных 2d спрайтов с http://reinerstileset.4players.de. Однако его фон (неизвестно) коричневого цвета, который я хочу удалить.

Есть ли способ, которым я могу проверить пиксель в (1,1) и установить этот пиксель как цветовой ключ для удаления, чтобы я не получил цвет фона объектов?

Ответы [ 2 ]

5 голосов
/ 31 марта 2011

Для текстурного процессора есть свойство, задающее цвет для прозрачности фона.

Выберите ваш спрайт в обозревателе решений (он должен быть в вашем контент-проекте), затем найдите инспектор свойств. Вы должны увидеть «Content Processor: Texture - XNA Framework». Разверните этот раздел, измените цвет ключа цвета по мере необходимости. Значение по умолчанию: пурпурный / ярко-розовый (0xFF00FF).

1 голос
/ 31 марта 2011

Вы можете создать контент-процессор, который сделает это за вас. Вот пример простого текстурного процессора. Это для предварительно умноженной альфы (что уже делает XNA 4.0, но она была полезна в 3.1).

Вы можете легко изменить его, чтобы прочитать в первом пикселе и очистить все пиксели с соответствующими значениями. Как то так:

    Color m = bitmap.GetPixel(0, 0);
    for (int y = 0; y < bitmap.Height; y++)
    {
        for (int x = 0; x < bitmap.Width; x++)
        {
            if (m == bitmap.GetPixel(x, y))
                bitmap.SetPixel(x, y, Color.Transparent);
        }
    }

Поместите это в новый проект библиотеки Windows, добавьте его в качестве ссылки на ваш контент-проект, создайте его один раз, и вы сможете выбрать его из опций процессора на панели свойств (F4) для ваших текстур.

Конечно, если все ваши спрайты имеют одинаковый цвет фона, ответ jv42 будет проще.

...