Найти размер холста - PullRequest
       7

Найти размер холста

3 голосов
/ 08 марта 2012

Как узнать размер Canvas, созданного в файле xaml?

например, я создаю холст

<Page
    x:Class="MyApp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MyApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

        <Canvas x:Name="canvas" Background="White">
        </Canvas>
</Page>

и полный экран белый или любой другой цвет, который я указал для этого холста

чем в моем классе я пытался, но безуспешно

double h = canvas.Height; // NaN
h = canvas.ActualHeight;  // 0

так, как я узнал фактический размер этого холста? или размер равен 0, но чем сделать холст в полноэкранном режиме?

Я новичок в C # и разработчике метрополитена и так растерялся, как все работает по сравнению с iOS.

Ответы [ 2 ]

6 голосов
/ 08 марта 2012

Где в вашем коде вы проверяете размер холста? Я предполагаю, что вы делаете это в конструкторе страниц или в другом месте, которое выполняется до запуска макета пользовательского интерфейса. В этом случае все элементы авторазмера (высота или ширина NaN) по-прежнему имеют размер по умолчанию. Если вы проверите размер после завершения макета, как в обработчике события Loaded на вашей странице, то вы должны увидеть истинный размер отрисовки.

0 голосов
/ 01 августа 2014

Если ваш Canvas содержит только один Image, вы можете использовать:

var Width = ((Image) (MyCanvas.Children[0])).Width;
var Height = ((Image) (MyCanvas.Children[0])).Height;

Конечно, вы можете переключить два Image приведения на другой элемент, если ваш Canvas содержит один из других предметов.

В качестве альтернативы просто дайте обернутому Image (или другому элементу) имя и укажите его как MyImage.Width.

...