Как вы определяете фактический размер на экране? - PullRequest
2 голосов
/ 30 мая 2011

В элементе управления wpf с функцией масштабирования я рассчитываю из MouseWheelEventArgs, как масштабировать холст для рисования, чтобы реализовать эффект масштабирования.

Point mouse = e.GetPosition(myCanvas);
Matrix m = myCanvas.RenderTransform.Value;

if (e.Delta > 0)
{
    f = 1.1;
}
else
{
    f = 1.0 / 1.1;
}

m.ScaleAtPrepend(f, f, mouse.X, mouse.Y);
myCanvas.RenderTransform = new MatrixTransform(m);

Мне бы хотелось узнать фактический размер одного из кружков на холсте. Однако Width, ActualWidth и другие остаются неизменными при увеличении и уменьшении (16,0). Как бы вы определили (рассчитали?) Размер круга, который пользователь фактически видит на своем экране?

1 Ответ

1 голос
/ 30 мая 2011

MatrixTransform имеет метод TransformBounds для этого.Вы подаете его с оригинальной ограничительной рамкой изображения (я думаю, что в вашем случае подойдет 0,0, ширина, высота), и он вернет вам получившуюся ограничивающую рамку.

...