예제 #1
0
        private static void ZeichneBlatt(Graphics zeichenFlaeche, Random random, PointF anfangsPunkt, PointF endPunkt)
        {
            var mittelPunkt = new PointF(
                anfangsPunkt.X + (endPunkt.X - anfangsPunkt.X) / 2f - 2 + random.Next(4),
                anfangsPunkt.Y - 11 + random.Next(4)
                );

            var umrissPfad = new GraphicsPath();

            umrissPfad.AddLine(anfangsPunkt, endPunkt);
            umrissPfad.AddBezier(
                anfangsPunkt.X,
                anfangsPunkt.Y,
                mittelPunkt.X - 2 + random.Next(4),
                mittelPunkt.Y - 2 + random.Next(4),
                mittelPunkt.X + 2 - random.Next(4),
                mittelPunkt.Y - 2 + random.Next(4),
                endPunkt.X,
                endPunkt.Y
                );

            umrissPfad.CloseFigure();
            var grasFarbton = random.Next(4);
            var grasStift   = Farbverwaltung.GrasStift(grasFarbton);
            var grasBuerste = Farbverwaltung.GrasBuerste(grasFarbton);

            zeichenFlaeche.FillPath(grasBuerste, umrissPfad);
            zeichenFlaeche.DrawPath(grasStift, umrissPfad);

            /*
             * zeichenFlaeche.DrawEllipse(Pens.LightSalmon, anfangsPunkt.X - 2, anfangsPunkt.Y - 2, 4, 4);
             * zeichenFlaeche.DrawEllipse(Pens.LightSalmon, mittelPunkt.X - 2, mittelPunkt.Y - 2, 4, 4);
             * zeichenFlaeche.DrawEllipse(Pens.LightSalmon, endPunkt.X - 2, endPunkt.Y - 2, 4, 4);
             */
        }
예제 #2
0
        private static void ZeichneGummiband(Control woBinIch, Graphics zeichenFlaeche, LevelArchitekturPfad architekturPfad)
        {
            var grafikPfad = LevelZeichner.AlsPfad(woBinIch, architekturPfad);

            if (architekturPfad.IstRechteck || architekturPfad.IstGefuellt)
            {
                /* gefüllt geht nur als geschlossene kurva */
                if (architekturPfad.IstGefuellt)
                {
                    zeichenFlaeche.FillClosedCurve(
                        Farbverwaltung.BuersteVonMedium(architekturPfad.terrainMaterial),
                        grafikPfad.PathPoints,
                        FillMode.Alternate,
                        0.62f
                        );
                }

                zeichenFlaeche.DrawClosedCurve(
                    Farbverwaltung.StiftVonMedium(architekturPfad.terrainMaterial, architekturPfad.StiftDicke),
                    grafikPfad.PathPoints,
                    0.62f,
                    FillMode.Alternate
                    );
            }
            else
            {
                zeichenFlaeche.DrawCurve(
                    Farbverwaltung.StiftVonMedium(architekturPfad.terrainMaterial, architekturPfad.StiftDicke),
                    grafikPfad.PathPoints,
                    0.62f
                    );
            }
        }
예제 #3
0
        private static void ZeichneEi(Control woBinIch, Graphics zeichenFlaeche, LevelArchitekturPfad architekturPfad)
        {
            var grafikPfad = LevelZeichner.AlsPfad(woBinIch, architekturPfad);

            if (architekturPfad.IstGefuellt)
            {
                zeichenFlaeche.FillEllipse(
                    Farbverwaltung.BuersteVonMedium(architekturPfad.terrainMaterial),
                    grafikPfad.PathPoints[0].X,
                    grafikPfad.PathPoints[0].Y,
                    Math.Abs(grafikPfad.PathPoints[1].X - grafikPfad.PathPoints[0].X) + 1,
                    Math.Abs(grafikPfad.PathPoints[1].Y - grafikPfad.PathPoints[0].Y) + 1
                    );
            }

            zeichenFlaeche.DrawEllipse(
                Farbverwaltung.StiftVonMedium(architekturPfad.terrainMaterial, architekturPfad.StiftDicke),
                grafikPfad.PathPoints[0].X,
                grafikPfad.PathPoints[0].Y,
                Math.Abs(grafikPfad.PathPoints[1].X - grafikPfad.PathPoints[0].X) + 1,
                Math.Abs(grafikPfad.PathPoints[1].Y - grafikPfad.PathPoints[0].Y) + 1
                );
        }
예제 #4
0
        private static void ZeichnePfad(Control woBinIch, Graphics zeichenFlaeche, LevelArchitekturPfad architekturPfad)
        {
            var grafikPfad = LevelZeichner.AlsPfad(woBinIch, architekturPfad);

            if (architekturPfad.IstPunkt)
            {
                zeichenFlaeche.DrawLine(
                    Farbverwaltung.StiftVonMedium(architekturPfad.terrainMaterial, architekturPfad.StiftDicke),
                    grafikPfad.PathPoints[0],
                    grafikPfad.PathPoints[0]
                    );
            }
            else if (architekturPfad.IstLinie)
            {
                if (architekturPfad.IstRechteck)
                {
                    if (architekturPfad.IstGefuellt)
                    {
                        zeichenFlaeche.FillRectangle(
                            Farbverwaltung.BuersteVonMedium(architekturPfad.terrainMaterial),
                            grafikPfad.PathPoints[0].X,
                            grafikPfad.PathPoints[0].Y,
                            Math.Abs(grafikPfad.PathPoints[1].X - grafikPfad.PathPoints[0].X) + 1,
                            Math.Abs(grafikPfad.PathPoints[1].Y - grafikPfad.PathPoints[0].Y) + 1
                            );
                    }

                    zeichenFlaeche.DrawRectangle(
                        Farbverwaltung.StiftVonMedium(architekturPfad.terrainMaterial, architekturPfad.StiftDicke),
                        grafikPfad.PathPoints[0].X,
                        grafikPfad.PathPoints[0].Y,
                        Math.Abs(grafikPfad.PathPoints[1].X - grafikPfad.PathPoints[0].X) + 1,
                        Math.Abs(grafikPfad.PathPoints[1].Y - grafikPfad.PathPoints[0].Y) + 1
                        );
                }
                else
                {
                    zeichenFlaeche.DrawLine(
                        Farbverwaltung.StiftVonMedium(architekturPfad.terrainMaterial, architekturPfad.StiftDicke),
                        grafikPfad.PathPoints[0],
                        grafikPfad.PathPoints[1]
                        );
                }
            }
            else
            {
                if (architekturPfad.IstGefuellt)
                {
                    zeichenFlaeche.FillPath(
                        Farbverwaltung.BuersteVonMedium(architekturPfad.terrainMaterial),
                        grafikPfad
                        );
                }
                else
                {
                    zeichenFlaeche.DrawPath(
                        Farbverwaltung.StiftVonMedium(architekturPfad.terrainMaterial, architekturPfad.StiftDicke),
                        grafikPfad
                        );
                }
            }
        }