public Application() { Assembly renderAssembly = Assembly.GetAssembly(typeof(RenderService)); Assembly inputAssembly = Assembly.GetAssembly(typeof(InputService)); Factory drawFactory = new SlimDX.Direct2D.Factory(); GameLoader gameLoader = new GameLoader("game.kgl", new Assembly[] { renderAssembly, inputAssembly }, die); game = gameLoader.CreateGame(); renderService = game.GetService<RenderService>(); renderService.Dpi = drawFactory.DesktopDpi; if (renderService.Width == 0) { renderService.Width = 800; } if (renderService.Height == 0) { renderService.Height = 600; } PointF pixelSize = renderService.ConvertDipsToPixels(new PointF(renderService.Width, renderService.Height)); Size size = new Size((int)pixelSize.X, (int)pixelSize.Y); form = new RenderForm(game.Name) { ClientSize = size, FormBorderStyle = FormBorderStyle.FixedSingle, MaximizeBox = false }; renderService.RenderTarget = new WindowRenderTarget(drawFactory, new WindowRenderTargetProperties() { Handle = form.Handle, PixelSize = size }); inputService = game.GetService<InputService>(); inputService.Form = form; int y = (int)((SystemInformation.VirtualScreen.Height - renderService.Height * renderService.Dpi.Height / 96.0) / 2); if (y < 0) y = 0; int x = (int)((SystemInformation.VirtualScreen.Width - renderService.Width * renderService.Dpi.Width / 96.0) / 2); if (x < 0) x = 0; form.SetDesktopLocation(x, y); }