private void RenderCanvasPreview(CanvasLayoutModel canvas)
        {
            var screenWorkArea = App.Overlay.WorkArea;

            canvas.ScaleLayout(workAreaWidth: screenWorkArea.Width, workAreaHeight: screenWorkArea.Height);

            Viewbox viewbox = new Viewbox
            {
                Stretch = Stretch.Uniform,
            };

            Body.Children.Add(viewbox);
            Canvas frame = new Canvas
            {
                Width  = screenWorkArea.Width,
                Height = screenWorkArea.Height,
            };

            viewbox.Child = frame;

            foreach (Int32Rect zone in canvas.Zones)
            {
                Border rect = new Border();
                Canvas.SetTop(rect, zone.Y);
                Canvas.SetLeft(rect, zone.X);
                rect.MinWidth  = zone.Width;
                rect.MinHeight = zone.Height;

                if (IsActualSize)
                {
                    rect.Style = (Style)FindResource("CanvasLayoutActualScalePreviewStyle");
                }
                else
                {
                    rect.Style = (Style)FindResource("CanvasLayoutSmallScalePreviewStyle");
                }

                frame.Children.Add(rect);
            }

            if (App.DebugMode)
            {
                TextBlock text = new TextBlock();
                text.Text     = "(" + App.Overlay.WorkArea.X + "," + App.Overlay.WorkArea.Y + ")";
                text.FontSize = 42;
                frame.Children.Add(text);
            }
        }
Example #2
0
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            CanvasLayoutModel model = (CanvasLayoutModel)DataContext;

            if (model != null)
            {
                _model = model;

                var workArea = App.Overlay.WorkArea;
                _model.ScaleLayout(workAreaWidth: workArea.Width, workAreaHeight: workArea.Height);

                UpdateZoneRects();

                _model.PropertyChanged += OnModelChanged;
            }
        }
Example #3
0
        private void UpdateZoneRects()
        {
            var workArea = App.Overlay.WorkArea;

            Preview.Width  = workArea.Width;
            Preview.Height = workArea.Height;

            _model.ScaleLayout(workAreaWidth: workArea.Width, workAreaHeight: workArea.Height);

            UIElementCollection previewChildren = Preview.Children;
            int previewChildrenCount            = previewChildren.Count;

            while (previewChildrenCount < _model.Zones.Count)
            {
                CanvasZone zone = new CanvasZone
                {
                    Model = _model,
                };

                Preview.Children.Add(zone);
                previewChildrenCount++;
            }

            while (previewChildrenCount > _model.Zones.Count)
            {
                Preview.Children.RemoveAt(previewChildrenCount - 1);
                previewChildrenCount--;
            }

            for (int i = 0; i < previewChildrenCount; i++)
            {
                Int32Rect  rect = _model.Zones[i];
                CanvasZone zone = previewChildren[i] as CanvasZone;

                zone.ZoneIndex = i;
                Canvas.SetLeft(zone, rect.X);
                Canvas.SetTop(zone, rect.Y);
                zone.Height          = rect.Height;
                zone.Width           = rect.Width;
                zone.LabelID.Content = i + 1;
            }
        }