Как вы определяете фактический размер на экране?
В элементе управления 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, ширина, высота), и он вернет вам получившуюся ограничивающую рамку.