コード例 #1
0
        private void LoadFile(string filename)
        {
            try
            {
                var building = Loader.Load(filename);
                _displayModel = Converter.Convert(building);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Unable to load file: {filename}.\n error: {ex.Message}",
                                "Loading failed",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
                return;
            }

            var(minWorld, maxWorld) = DisplayModelQuery.GetModelBounds(_displayModel);
            _viewPort = new ViewPort(pbMain.Width, pbMain.Height, minWorld, maxWorld);

            _renderer = new Renderer(_displayModel, _viewPort);
        }
コード例 #2
0
        public MainPage()
        {
            //InitializeComponent();

            var assembly = IntrospectionExtensions.GetTypeInfo(typeof(MainPage)).Assembly;
            var stream   = assembly.GetManifestResourceStream("DemoSquared.App.OfficeBuilding.xml");
            var building = Loader.Load(stream);

            _displayModel           = Converter.Convert(building);
            var(minWorld, maxWorld) = DisplayModelQuery.GetModelBounds(_displayModel);
            _viewPort = new ViewPort(100, 100, minWorld, maxWorld);
            _renderer = new Renderer(_displayModel, _viewPort);

            Picker pickerFloor = new Picker
            {
                Title           = "Floor",
                VerticalOptions = LayoutOptions.Start,
            };

            Picker pickerSpace = new Picker
            {
                Title           = "Space",
                VerticalOptions = LayoutOptions.Start,
            };

            SKCanvasView skCanvas = new SKCanvasView
            {
                VerticalOptions = LayoutOptions.FillAndExpand,
            };

            skCanvas.PaintSurface += OnPaintSample;

            foreach (var floor in _displayModel.Floors)
            {
                pickerFloor.Items.Add(floor.Name);
            }

            pickerFloor.SelectedIndexChanged += (sender, args) =>
            {
                pickerSpace.Items.Clear();

                var floor = _displayModel.Floors.First(f => f.Name == pickerFloor.SelectedItem as string);
                if (floor is null)
                {
                    return;
                }

                foreach (var wfloor in _displayModel.Floors)
                {
                    wfloor.Visible = false;
                }

                floor.Visible = true;

                foreach (var space in floor.Spaces)
                {
                    pickerSpace.Items.Add(space.Name);
                }

                skCanvas.InvalidateSurface();
            };

            pickerSpace.SelectedIndexChanged += (sender, args) =>
            {
                foreach (var space in _displayModel.Spaces)
                {
                    space.Selected = false;
                }

                if (pickerSpace.SelectedItem != null)
                {
                    var selectedSpace = _displayModel.Spaces.First(s => s.Name == pickerSpace.SelectedItem as string);
                    if (selectedSpace != null)
                    {
                        selectedSpace.Selected = true;
                    }
                    skCanvas.InvalidateSurface();
                }
            };

            pickerFloor.SelectedIndex = 0;
            pickerSpace.SelectedIndex = 0;

            // Build the page.
            this.Content = new StackLayout
            {
                Children =
                {
                    pickerFloor,
                    pickerSpace,
                    skCanvas
                }
            };
        }