none
Spiegeln eines Objektes auf dem Display (Skew Matrixmethode) RRS feed

  • Frage

  • Ich habe folgenden Code geschrieben:

      Dim Mx As New Windows.Media.Matrix
            If Horiz Then
                Mx.Skew(0, 180)
            Else
                Mx.Skew(0, 180)
            End If
            PtT = PList.ToArray
            Mx.Transform(PtT)
            PList = PtT.ToList
    Bei diesem Code funktioniert das Spiegeln nicht (In keiner Richtung). Ich verwende eine List(of Point), die in ein eindimsionales Array umgewandelt wird.woran liegt dieses, daß die List(ofpoint) sich beim Transform aufruf sich nicht verändert? 


    Markus Lein Madausstr 2 51109 Köln (Cologne) Germany

    Montag, 11. November 2013 06:14

Antworten

  • Hallo,
    willst du hier ein GUI-Element transformieren oder eine Liste spiegeln?

    Bei einem GUI-Element (Wahrscheinlich durch die Matrix):
    Hier würde ich direkt die jeweiligen Transformationen des Objekts zuweisen (bzw. die EIgenschaften binden).

    btn.RenderTransformOrigin = New Point(0.5, 0.5)'Spiegelpunkt
    btn.RenderTransform = New ScaleTransform() With {.ScaleX = -1, .ScaleY = 1}'Spiegelung an der X-Achse

    btn ist dabei mein zu spiegelndes Objekt. Alternativ kannst du auch eine TransformGroup erstellen und dort die Transformationen hinzufügen. Das Objekt weißt du dann der RenderTransform-Eigenschaft zu.

    Du kannst natürlich auch deine Matrix nehmen und diese in einer MatrixTransform anwenden. EIn Beispiel ist hier enthalten.

    Bei einer normalen Liste:
    Rufe einfach die Reverse-Methode auf und dann eventuell noch .ToArray um ein Array zu erhalten:

    Dim list As New List(Of Integer)()'Liste anlegen
    list.Reverse()'Umdrehen
    Dim arr As Integer() = list.ToArray()'Array daraus formen
    



    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    • Als Antwort markiert Markus1961 Montag, 25. November 2013 14:33
    Montag, 11. November 2013 14:11