1

我正在 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);

polyPolygon我事先创建的对象。

你可能会认为当表面被 blitted 到屏幕时,这会绘制一个浅绿色的多边形;它没有。生成的多边形是青色的!我通过实验发现,如果我用 制作颜色Color.FromArgb,R 通道变为红色,G 通道变为青色,B 通道变为黑色。

但是,如果我将 Draw 调用中的第二个布尔值设置为 false(禁用填充),我会得到一个浅绿色的轮廓。显然,填充操作导致颜色混乱。

有任何想法吗?

4

1 回答 1

0

这是一个错误: http: //sourceforge.net/tracker/index.php ?func=detail&aid=3127181&group_id=52340&atid=466516

Polygon 的第 196 行使用颜色 RGG 来填充,而不是 RGB。这使得坐姿不可能获得蓝色,并且倾向于染除红色以外的任何颜色。

令人沮丧,是的。尤其是当您的游戏依赖于能够绘制多边形时。

于 2012-09-27T02:18:58.903 回答