none
VB: Steuerelement auf der Stelle drehen

    Frage

  • Hallo,

    ich möchte in WPF ein Steuerelement auf der Stelle drehen. Ich habe ein bisschen rumprobiert, ist aber nichts rausgekommen. Wie macht man das?

    Vielen Dank im Voraus


    Gruß, Bolzen PS: Ich programmiere mit VS12(Desktop) und VS10

    Samstag, 29. Juni 2013 12:45

Antworten

  • Falls du den Codebehind (C#/VB.NET) meinst, dort gehts eigentlich wie im XAML, nur mit anderer Syntax.
            btn.RenderTransform = New RotateTransform(45)
    
            'Oder für mehrere Transformationen:
            Dim t As New TransformGroup()
            t.Children.Add(New RotateTransform(45))
            btn.RenderTransform = t


    - Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    ; Webseite | Code Beispiele | Facebook | Snippets | Twitter
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    • Als Antwort markiert Bolzen Sonntag, 30. Juni 2013 17:55
    Samstag, 29. Juni 2013 15:52
  • Hi,
    nachfolgend ein kleine Demo, in der ein Button über einen Zeitgeber gedreht wird:

    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Button Name="btn" Content="Bitte drück mich" Height="25" Width="100"/>
        </Grid>
    </Window>

    Und der CodeBehind dazu:

    Imports System.Windows.Threading
    Imports System.Threading
    Class MainWindow
      Private disp As Dispatcher
      Private t As Timer
      Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
        disp = Dispatcher
        t = New Timer(AddressOf Drehen, Nothing, 1000, 100)
      End Sub
      Private Sub Drehen(obj As Object)
        Static winkel As Double = 0
        disp.Invoke(Sub()
                      btn.RenderTransform = New RotateTransform(winkel, btn.Width / 2, btn.Height / 2)
                    End Sub)
        winkel += 1
      End Sub
    End Class

    --
    Peter
    • Als Antwort vorgeschlagen Peter FleischerMVP Sonntag, 30. Juni 2013 15:53
    • Als Antwort markiert Bolzen Sonntag, 30. Juni 2013 17:55
    Sonntag, 30. Juni 2013 15:53

Alle Antworten

  • Hallo, Für VS 2012 gehts recht einfach. markiere das Control und gehe in das Eigenschaften-Fenster. Dort kannst du unter Transformationen > Drehen einstellen, um wie viel Grad das Control gedreht werden soll.

    Mithilfe von RenderTransformOrign kannst du den Drehpunkt festlegen:

                <Button Content="Button" RenderTransformOrigin="0.5,0.5">
                    <Button.RenderTransform>
                        <RotateTransform Angle="45"/>
                    </Button.RenderTransform>
                </Button>


    - Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    ; Webseite | Code Beispiele | Facebook | Snippets | Twitter
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    Samstag, 29. Juni 2013 14:01
  • Hallo Koopakiller,

    das wusste ich schon. Ich möchte das Steuerelement durch "den anderen Code" (hab keine Ahnung wie das heißt) ändern, also während das Programm läuft.

    Ich hoffe das reicht als Erläuterung


    Gruß, Bolzen PS: Ich programmiere mit VS12(Desktop) und VS10

    Samstag, 29. Juni 2013 15:41
  • Falls du den Codebehind (C#/VB.NET) meinst, dort gehts eigentlich wie im XAML, nur mit anderer Syntax.
            btn.RenderTransform = New RotateTransform(45)
    
            'Oder für mehrere Transformationen:
            Dim t As New TransformGroup()
            t.Children.Add(New RotateTransform(45))
            btn.RenderTransform = t


    - Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    ; Webseite | Code Beispiele | Facebook | Snippets | Twitter
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    • Als Antwort markiert Bolzen Sonntag, 30. Juni 2013 17:55
    Samstag, 29. Juni 2013 15:52
  • Hi,
    nachfolgend ein kleine Demo, in der ein Button über einen Zeitgeber gedreht wird:

    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
        <Grid>
            <Button Name="btn" Content="Bitte drück mich" Height="25" Width="100"/>
        </Grid>
    </Window>

    Und der CodeBehind dazu:

    Imports System.Windows.Threading
    Imports System.Threading
    Class MainWindow
      Private disp As Dispatcher
      Private t As Timer
      Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
        disp = Dispatcher
        t = New Timer(AddressOf Drehen, Nothing, 1000, 100)
      End Sub
      Private Sub Drehen(obj As Object)
        Static winkel As Double = 0
        disp.Invoke(Sub()
                      btn.RenderTransform = New RotateTransform(winkel, btn.Width / 2, btn.Height / 2)
                    End Sub)
        winkel += 1
      End Sub
    End Class

    --
    Peter
    • Als Antwort vorgeschlagen Peter FleischerMVP Sonntag, 30. Juni 2013 15:53
    • Als Antwort markiert Bolzen Sonntag, 30. Juni 2013 17:55
    Sonntag, 30. Juni 2013 15:53
  • Danke für die hilfreichen Antworten.

    Gruß, Bolzen PS: Ich programmiere mit VS12(Desktop) und VS10

    Sonntag, 30. Juni 2013 17:56