Цвета в SDL ведут себя очень странно - PullRequest
1 голос
/ 22 июля 2011

Я делаю программу в SDL.NET, где мне нужно нарисовать закрашенный многоугольник. Я подумал, что было бы неплохо повторно использовать поверхность многоугольника вместо того, чтобы переделывать ее каждый раз, когда мне нужно рисовать, поэтому я делаю поверхность таким образом, а затем сохраняю ее в словарь:

polySur = Video.Screen.CreateCompatibleSurface(70, 70, true);
polySur.TransparentColor = Color.Magenta;
polySur.Fill(Color.Magenta);
polySur.Transparent = true;
poly.Draw(polySur, Color.LightGreen, false, true);

poly - это Polygon объект, который я создал заранее.

Вы можете подумать, что это нарисует светло-зеленый многоугольник, когда поверхность переместится на экран; это не так. Полученный многоугольник - голубой! В ходе экспериментов я обнаружил, что если я сделаю цвет с Color.FromArgb, канал R станет красным, канал G станет голубым, а канал B станет черным.

Однако, если я установлю второй логический параметр в вызове Draw на false (отключение заливки), я получу светло-зеленый контур. Очевидно, что операция заливки приводит к тому, что цвета портятся.

Есть идеи?

1 Ответ

0 голосов
/ 27 сентября 2012

Это ошибка: http://sourceforge.net/tracker/index.php?func=detail&aid=3127181&group_id=52340&atid=466516

Строка 196 полигона использует цвет RGG для заполнения вместо RGB.Это делает сидение невозможным, чтобы получить синий цвет, и имеет тенденцию окрашивать любой другой цвет, кроме красного.

Разочарование, да.Особенно, когда ваша игра зависит от возможности рисовать многоугольники.

...