/// <summary> /// Renders the specified user interface. /// </summary> /// <param name="userInterface">The user interface to render.</param> public void Render(UserInterface userInterface) { if (userInterface == null) throw new ArgumentNullException("userInterface"); int y = 0; foreach (Element element in userInterface.Container) { IElementVisual visual = new DefaultVisual(); Vector2 size = visual.Measure(this, element); visual.Render(this, element, 0, y, (int)size.X, (int)size.Y); y += (int)size.Y; } Flush(); }
/// <summary> /// Runs the sample. /// </summary> public void Run() { _configuration = OnConfigure(); _form = CreateForm(_configuration); currentFormWindowState = _form.WindowState; bool isFormClosed = false; bool formIsResizing = false; _form.MouseClick += HandleMouseClick; _form.KeyDown += HandleKeyDown; _form.KeyUp += HandleKeyUp; _form.MouseDown += HandleMouseDown; _form.MouseUp += HandleMouseUp; _form.MouseMove += HandleMouseMove; _form.MouseWheel += HandleMouseMove; _form.Resize += (o, args) => { if (_form.WindowState != currentFormWindowState) { HandleResize(o, args); } currentFormWindowState = _form.WindowState; }; _form.ResizeBegin += (o, args) => { formIsResizing = true; }; _form.ResizeEnd += (o, args) => { formIsResizing = false; HandleResize(o, args); }; _form.Closed += (o, args) => { isFormClosed = true; }; userInterface = new UserInterface(); var stats = new Element(); stats.SetBinding("Label", framesPerSecond); userInterface.Container.Add(stats); arcBall.SetWindow(_form.ClientSize.Width, _form.ClientSize.Height); var settings = new DeviceSettings9 { AdapterOrdinal = 0, CreationFlags = CreateFlags.HardwareVertexProcessing, Width = WindowWidth, Height = WindowHeight }; InitializeDevice(settings); OnInitialize(); this.renderList.ForEach(x => x.Init()); OnResourceLoad(); clock.Start(); MessagePump.Run(_form, () => { if (isFormClosed) { return; } Update(); if (!formIsResizing) { Render(false); } }); OnResourceUnload(); }