Как я могу получить размер после масштабирования на WPF? - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу изменить размер кнопки.Затем получите размер кнопки после масштабирования.Показать размер на этикетке

MouseWheel += (ss, ee) =>
{
    Matrix mat = button.RenderTransform.Value;

    if (ee.Delta > 0) mat.ScalePrepend(1.1, 1.1);
    else mat.ScalePrepend(0.9, 0.9);

    button.RenderTransform = new MatrixTransform(mat);

    label.Content=??????;
};

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Layout не влияет на RenderTransform.Но на основе матрицы масштабирования, которую вы предоставили, я рассчитал приблизительную или близкую высоту и ширину.

Если Delta> 120, то вы задали X1 = 1.1 и Y1 = 1,1 остальное X2 = 0,9 и Y2 = 0,9.

На основе умножения матрицы масштабирования я применил то же самое, чтобы найти высоту и ширину.

MouseWheel += (ss, ee) =>
{
        double width = Button5.ActualWidth;
        double height = Button5.ActualHeight;


        Label.Content = string.Empty;
        Matrix mat = Button5.RenderTransform.Value;

        if (ee.Delta > 0)
            mat.ScalePrepend(1.1, 1.1);
        else
            mat.ScalePrepend(0.9, 0.9);

        Button5.RenderTransform = new MatrixTransform(mat);

        height = height * (Button5.RenderTransform.Value.M11 );
        width = width * (Button5.RenderTransform.Value.M22 );

        Label.Content = String.Format($"Height -  {height} Width - {width}");
 };

Примечание: - ActualHeight и AcutalWidth не применяются.Это только для отображения.

0 голосов
/ 22 ноября 2018

Неизменные значения в ActualWidth и ActualHeight являются естественными, потому что изменения должны произойти после рендеринга.Вот почему это следует использовать очень осторожно.

Та же проблема подробно обсуждается в

https://social.msdn.microsoft.com/Forums/en-US/5b7fbb2e-717c-44e2-8468-dcdf0a4ea28d/actualwidthheight-not-changed-by-rendertransform?forum=wpf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...