コード例 #1
0
ファイル: CharlieWindow.cs プロジェクト: AquaFlyRat/B2M2
        public CharlieWindow(int width, int height, Action <Window, Renderer2D> onDraw)
        {
            _onDrawAction = onDraw;

            Panel           = new Panel();
            Panel.Width     = width;
            Panel.Height    = height;
            Panel.Dock      = DockStyle.Fill;
            Panel.BackColor = System.Drawing.Color.Black;
            Panel.Location  = new System.Drawing.Point(0, 0);
            Panel.Click    += (object o, EventArgs e) => { Panel.Parent.Select(); };

            var screenDimensions = Screen.FromControl(Panel).Bounds;

            WindowConfig config = new WindowConfig(screenDimensions.Width, screenDimensions.Height, "", WindowFlags.Borderless | WindowFlags.PositionOrigin);

            NativeWindow = new Window(config);
            NativeWindow.SetClearColor(0.1f, 0.2f, 0.3f, 1.0f);

            Timer timer = new Timer();

            timer.Interval = 1000 / 120;

            _renderer = new Renderer2D();
            _renderer.Initalize(Matrix4.Orthographic(screenDimensions.Width, 0, 0, screenDimensions.Height, 1, -1));

            Font font = new Font("Assets/WendyOne-Regular.ttf", 38);

            timer.Tick += (object o, EventArgs e) => {
                NativeWindow.PollEvents();
                NativeWindow.Clear();
                _renderer.Begin();
                _onDrawAction(NativeWindow, _renderer);
                _renderer.End();
                _renderer.Present();
                NativeWindow.SwapBuffers();
            };

            Panel.Disposed += (object o, EventArgs e) => { _renderer.Dispose(); };

            timer.Start();

            Win32.SetWindowPos(NativeWindow.GetHWND(), IntPtr.Zero, 0, 0, 0, 0, Win32.SWP_NOSIZE);
            Win32.SetParent(NativeWindow.GetHWND(), Panel.Handle);
            Win32.SetWindowLong(NativeWindow.GetHWND(), Win32.GWL_STYLE, (uint)Win32.WS_CHILD);
        }