Я делаю программу в 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 (отключение заливки), я получу светло-зеленый контур. Очевидно, что операция заливки приводит к тому, что цвета портятся.
Есть идеи?