Элементы, которые не отображаются на Resize of Viewbox, Silverlight - PullRequest
3 голосов
/ 28 января 2011

В настоящее время я разрабатываю макет приложения в Silverlight, и у меня Canvas внутри Viewbox.Я добавляю формы на холст, и они отображаются правильно, когда я изменяю размер окна просмотра, чтобы увеличить в 2 раза высоту и ширину, все по-прежнему рисуется правильно.

Проблема возникает, когда я пытаюсь увеличить с коэффициентом 4 или выше или на 0.5 (уменьшено).

Обновление : горизонтальные линии все еще есть, они просто не рисуются.Взаимодействие между другими фигурами и исчезающими фигурами все еще присутствует

Когда я делаю это, любые горизонтальные линии не перерисовываются, но любые другие фигуры, вертикальные линии других, все еще перерисовываются нормально.Объекты все еще являются дочерними элементами холста, и их видимость все установлена ​​на видимое.

Что происходит?

Обновление
Очень простой XAML:

<ScrollViewer x:Name="scrollViewer" 
              Padding="0"
              ScrollViewer.VerticalScrollBarVisibility="Auto"
              ScrollViewer.HorizontalScrollBarVisibility="Auto"
              IsTabStop="False"
              Background="Beige">
    <Viewbox x:Name="viewBox" Stretch="UniformToFill">
        <Canvas x:Name="designCanvas"  
                Background="{Binding ElementName=mainControl, Path=Background, Mode=TwoWay}">
        </Canvas>
    </Viewbox>
</ScrollViewer>

Вот как я добавляю фигуры:

Rectangle horGuide = new Rectangle()
            {
                Tag = "horGuide",
                Fill = new SolidColorBrush(Colors.Cyan),
                Height = 0.5,
                Width = designCanvas.canvActualWidth*16,
            };

            int h = designCanvas.horOffset; 
            int v = designCanvas.vertOffset;
            double d = e.GetPosition(sideRule).Y;

            designCanvas.Children.Add(horGuide);
            Canvas.SetTop(horGuide, ((d+v )/ designCanvas.zoomFactor));
            Canvas.SetLeft(horGuide, 0 - h);

Для увеличения:

       viewBox.Width *= 2;
       viewBox.Height *= 2;

1 Ответ

0 голосов
/ 10 марта 2011

Почему бы не использовать класс ScaleTransform для увеличения и уменьшения масштаба.

...