我正在 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
我事先创建的对象。
你可能会认为当表面被 blitted 到屏幕时,这会绘制一个浅绿色的多边形;它没有。生成的多边形是青色的!我通过实验发现,如果我用 制作颜色Color.FromArgb
,R 通道变为红色,G 通道变为青色,B 通道变为黑色。
但是,如果我将 Draw 调用中的第二个布尔值设置为 false(禁用填充),我会得到一个浅绿色的轮廓。显然,填充操作导致颜色混乱。
有任何想法吗?