Хочу при клике вращать кнопку.
Подумал, что должно так работать:
void new_button_click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
var transform = btn.RenderTransform as RotateTransform;
transform.Angle += 90;
}
Но не работает)) Что не так? Хочу поворот реализовать именно C# кодом, не XAML.
При клике ругается на эту строку:
transform.Angle += 90;
Исключение:
Ссылка на объект не указывает на экземпляр объекта.
Ответ
Из Вашего кода получается, что в этой строке:
var transform = btn.RenderTransform as RotateTransform;
получаем значение null, поэтому далее получаем исключение Ссылка на объект не указывает на экземпляр объекта при обращении к transform.Angle. Поэтому следует добавить проверку, а затем уже поворот, попробуйте так:
void new_button_click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
if(btn != null)
{
var rotateTransform = btn.RenderTransform as RotateTransform;
var transform = new RotateTransform(90 + (rotateTransform?.Angle ?? 0));
btn.RenderTransform = transform;
}
}
В данном примере кнопка поворачивается на 90 градусов после каждого нажатия.
Полезные ссылки:
Transforms Overview
Свойство UIElement.RenderTransform
How to: Rotate an Object
Комментариев нет:
Отправить комментарий