0

GDI+ を使用して内側のリングを持つ多角形を描画する際に問題があります。現在の画面が内側のリングの内側にあるため、結果が空白になると予想していますが、塗りつぶしの結果はしっかりしています。外側のリングを縮小すると、正しい結果が得られます。この動作を説明できる人はいますか? コードは以下に掲載されていますここに画像の説明を入力

public static void Main()
    {
        SaveBitmap(1);
        SaveBitmap(10);
    }

    private static void SaveBitmap(double factor)
    {
        Bitmap bitmap = new Bitmap(800, 600);
        GraphicsPath path = new GraphicsPath();
        path.AddPolygon(GetOuterRing(factor));
        path.AddPolygon(GetInnerRing());

        Graphics g = Graphics.FromImage(bitmap);
        g.FillPath(new SolidBrush(Color.LightBlue), path);
        g.Dispose();

        bitmap.Save(factor + ".jpg");
        bitmap.Dispose();
    }

    private static PointF[] GetOuterRing(double factor)
    {
        return new PointF[]
        {
            new PointF((float)(-8388210.0f / factor), (float)(-4194020.5f/ factor)),
            new PointF((float)(8389000.0f/ factor), (float)(-4194020.5f/ factor)),
            new PointF((float)(8389000.0f/ factor), (float)(4194580.5f/ factor)),
            new PointF((float)(-8388210.0f/ factor),(float)(4194580.5f/ factor)),
            new PointF((float)(-8388210.0f/ factor), (float)(-4194020.5f/ factor))
        };
    }

    private static PointF[] GetInnerRing()
    {
        return new PointF[]
        {
            new PointF(-419038.4f, -209434.7f),
            new PointF(-419038.4f, 209995.7f),
            new PointF(419822.4f, 209995.7f),
            new PointF(419822.4f, -209434.7f),
            new PointF(-419038.4f, -209434.7f),
        };
    }
4

0 に答える 0