Почему ActualWidth/ActualHeight не изменяются после выполнения RenderTransform?

У меня есть следующий код для изменения размера элемента управления изображением

    private void ApplyScale()
    {
        ((CompositeTransform)img.RenderTransform).ScaleX = TotalImageScale;
        ((CompositeTransform)img.RenderTransform).ScaleY = TotalImageScale;
        Debug.WriteLine("img.Width: " + img.Width.ToString() + " - img.ActualWidth: " + img.ActualWidth.ToString());
        Debug.WriteLine("img.Height: " + img.Height.ToString() + " - img.ActualHeight: " + img.ActualHeight.ToString()); 

    }

Пока код работает нормально, пытаюсь понять, почему изображения ActualWidth и ActualHeight не меняются после масштабирования. Они всегда совпадают со значениями Width и Height.

Как получить новый размер элемента управления изображением? Должен ли я рассчитывать его вручную через коэффициент изменения шкалы?


person PutraKg    schedule 20.02.2013    source источник


Ответы (1)


RenderTransform не должен влиять на макет, что было бы, если бы он изменил ActualSize. Если вы используете LayoutTransform, это должно изменить эти значения, но это относительно простой расчет, чтобы найти новый размер из старого размера и коэффициентов масштабирования.

person TheEvilPenguin    schedule 20.02.2013
comment
Я понимаю. Но в Windows Phone 8 нет LayoutTransform? - person PutraKg; 20.02.2013
comment
@PutraKg Ааа, извините, я видел LayoutTransform и ActualSize и предположил WPF. Я ничего не знаю о WP8, но информация о RenderTransform все равно будет верной. - person TheEvilPenguin; 20.02.2013