Как вы определяете фактический размер на экране?

В элементе управления 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 ответ

Решение

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

Другие вопросы по тегам