コード例 #1
0
ファイル: GraphicsControl.cs プロジェクト: vazgriz/OpenGL.Net
        /// <summary>
        /// Raises the Paint event.
        /// </summary>
        /// <param name="e">
        /// A <see cref="PaintEventArgs"/> that contains the event data.
        /// </param>
        protected override void OnPaint(PaintEventArgs e)
        {
            if (DesignMode == false)
            {
                if (_RenderContext != null)
                {
                    // Render the UserControl
                    if (_RenderContext.IsCurrent == false)
                    {
                        _RenderContext.MakeCurrent(true);
                    }
                    // Define viewport
                    Gl.Viewport(0, 0, ClientSize.Width, ClientSize.Height);
                    // Clear
                    _RenderWindow.Clear(_RenderContext);

                    // Derived class implementation
                    RenderThis(_RenderContext);
                    // Render event
                    RaiseRenderEvent(new GraphicsControlEventArgs(_RenderContext, _RenderWindow));

                    // Swap buffers if double-buffering
                    _RenderWindow.SwapSurface();

                    // Base implementation (overlay GDI graphics)
                    base.OnPaint(e);
                }
                else
                {
                    e.Graphics.DrawLines(_FailurePen, new Point[] {
                        new Point(0, 0), new Point(ClientSize.Width, ClientSize.Height),
                        new Point(0, ClientSize.Height), new Point(ClientSize.Width, 0),
                    });

                    // Base implementation
                    base.OnPaint(e);
                }
            }
            else
            {
                e.Graphics.Clear(Color.Black);
                e.Graphics.DrawLines(_DesignPen, new Point[] {
                    new Point(0, 0), new Point(ClientSize.Width, ClientSize.Height),
                    new Point(0, ClientSize.Height), new Point(ClientSize.Width, 0),
                });

                // Base implementation
                base.OnPaint(e);
            }
        }