Пример #1
0
        /// <summary>
        /// Erzeugt eine neue Beschreibung.
        /// </summary>
        /// <param name="fläche">Die tatsächliche Position des Elementes.</param>
        /// <param name="horizontaleVerschiebung">Die Verschiebung in horizontale Richtung.</param>
        /// <param name="vertikaleVerschiebung">Die Verschiebung in vertikale Richtung.</param>
        private ElementInBewegung( Fläche fläche, GenaueZahl horizontaleVerschiebung, GenaueZahl vertikaleVerschiebung )
        {
            // Alles merken
            HorizontaleVerschiebung = horizontaleVerschiebung;
            VertikaleVerschiebung = vertikaleVerschiebung;
            Fläche = fläche;

            // Breite und Höhe des Bewegungspfads ermitteln
            var breite = Fläche.Bereich.Breite + HorizontaleVerschiebung.Abs();
            var höhe = Fläche.Bereich.Höhe + VertikaleVerschiebung.Abs();

            // Ursprung bestimmen
            var links = Fläche.Bereich.KleinsteHorizontalePosition;
            var unten = Fläche.Bereich.KleinsteVertikalePosition;

            // Je nach Orientierung korrigieren
            if (HorizontaleVerschiebung < GenaueZahl.Null)
                links += HorizontaleVerschiebung;
            if (VertikaleVerschiebung < GenaueZahl.Null)
                unten += VertikaleVerschiebung;

            // Gesamtumfang ermitteln
            GesamterBereich = Bereich.Erzeugen( links, unten, breite, höhe );
        }