WPF - RotateTransform

這篇來測試一下旋轉的效果,旋轉的效果是將RotateTransForm設定給控制項的RenderTransForm屬性,執行的結果像下面這樣

下面我們就來看看測試的程式碼吧
Imports System.Windows
Imports System.IO
Imports System.Reflection

Class Window1

Dim cv As Canvas
Dim myT As Threading.DispatcherTimer
Dim btnOther As New Button
Dim rotatePoint As Double = 0

Private Sub Window1_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
cv = New Canvas
Me.Content = cv

For z As Integer = 0 To 9
Dim btn As New Button
btn.Name = "btn_" & z
''設定旋轉的原點
btn.RenderTransformOrigin = New Point(0, 0)
''設定旋轉的角度
btn.RenderTransform = New RotateTransform(z * 36)
btn.Content = "Button" & z & " Rotate=" & Format(z * 36, "000")
btn.Background = Brushes.LightPink
Canvas.SetLeft(btn, 150)
Canvas.SetTop(btn, 150)
cv.Children.Add(btn)
Next

btnOther.Name = "btnOther"
''矩形左上
btnOther.RenderTransformOrigin = New Point(0, 0)
''矩形左下
'btnOther.RenderTransformOrigin = New Point(0, 1)
''矩形右上
'btnOther.RenderTransformOrigin = New Point(1, 0)
''矩形右下
'btnOther.RenderTransformOrigin = New Point(1, 1)
''中心點
'btnOther.RenderTransformOrigin = New Point(0.5, 0.5)
btnOther.Background = Brushes.LightGreen
Canvas.SetLeft(btnOther, 300)
Canvas.SetTop(btnOther, 150)
cv.Children.Add(btnOther)

''Timer相關設定
myT = New Threading.DispatcherTimer
myT.Interval = New TimeSpan(0, 0, 0, 0, 300)
AddHandler myT.Tick, AddressOf Timer_Tick
myT.Start()
End Sub

Private Sub Timer_Tick(ByVal sender As Object, ByVal e As EventArgs)
If rotatePoint > 9 Then
rotatePoint = 0
Else
rotatePoint += 1
End If
btnOther.RenderTransform = New RotateTransform(rotatePoint * 36)
btnOther.Content = "btnOther Rotate=" & Format(rotatePoint * 36, "000")
End Sub
End Class
註解掉的地方可以自行測試看看當變更原點的時候有什麼不同的變化,不過一個會轉的Button,使用者應該會"幹譙"吧..XD

留言

這個網誌中的熱門文章

開啟cshtml檔案時,出現『並未將物件參考設定為物件執行個體』的錯誤訊息

無法設定中斷點 尚未載入符號檔

DataGridView欄位計算總合