Пример #1
0
        private void RenderFunction()
        {
            RenderLoop.RenderCallback callback = new RenderLoop.RenderCallback(RenderCallback);

            using (var renderLoop = new TRRM.Viewer.RenderLoop(this)
            {
                UseApplicationDoEvents = false
            })
            {
                float    target = 1.0f / 60.0f;
                DateTime last   = DateTime.Now;
                while (renderLoop.NextFrame())
                {
                    lock (DX.GlobalLock)
                    {
                        try
                        {
                            callback();
                        } catch (SharpDXException e)
                        {
                            Console.WriteLine("DX error occurred: {0}", e.Message);
                        }
                    }
                    DateTime now     = DateTime.Now;
                    double   elapsed = (now - last).TotalMilliseconds;
                    if (elapsed < target)
                    {
                        Thread.Sleep((int)(target - elapsed));
                    }
                }
            }
        }
Пример #2
0
 public GraphicSystem(RenderLoop.RenderCallback LogicMethod, RenderLoop.RenderCallback RenderMethod)
 {
     _logicMethod = LogicMethod;
     _renderMethod = RenderMethod;
     _renderForm = new RenderForm();
     _graphicsDevice = new GraphicsDevice(this);
     _graphicsDevice.CreateDevice(_renderForm.Handle);
 }
Пример #3
0
 public GraphicSystem(RenderLoop.RenderCallback LogicMethod, RenderLoop.RenderCallback RenderMethod)
 {
     _logicMethod    = LogicMethod;
     _renderMethod   = RenderMethod;
     _renderForm     = new RenderForm();
     _graphicsDevice = new GraphicsDevice(this);
     _graphicsDevice.CreateDevice(_renderForm.Handle);
 }
Пример #4
0
        public void Draw(RenderLoop.RenderCallback cb)
        {
            RenderLoop.Run(Window, () =>
            {
                _device.BeginDraw();
                _device.Clear(null);

                cb.Invoke();

                _device.Flush();
                _device.EndDraw();
            });
        }
Пример #5
0
        public Form1()
        {
            InitializeComponent();

            SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true);

            form.Width  = 600;
            form.Height = 600;
            test();
            callback = new RenderLoop.RenderCallback(Render);

            RenderLoop.Run(form, callback);
        }
Пример #6
0
        public Chart()
        {
            InitializeComponent();

            #region Init

            _resize    = 0;
            _isResized = true;
            _isZoomed  = true;

            _mousePisition = new ScreenPoint();
            _drawings      = new List <SelectedFigureBase>();

            _barType      = BarType.OHLC;
            _actions      = DrawingActions.Default;
            _chartHelpers = ChartHelpers.Default;

            var windowSize = new Size(800, 800);
            SetRenderSettings(windowSize);

            _chart          = new ChartDrawing(ClientSize.Width, ClientSize.Height, _d2DRenderTarget, TimingBy.Minute);
            _chartRendering = new ChartRendering.ChartRendering(_d2DRenderTarget, _textFormat, _chart);
            GenerateBars();
            SetForChartMinMaxPoints(0);

            _borders = new RectangleF(windowSize.Width * _chart.Paddings.PaddingLeftRatio,
                                      windowSize.Height * _chart.Paddings.PaddingTopRatio, _chart.ChartWidth, _chart.ChartHeight);
            #endregion

            #region FormHandlers

            KeyDown    += OnKeyDown;
            MouseDown  += OnMouseDown;
            MouseClick += OnMouseClick;
            MouseWheel += OnMouseWheel;
            MouseMove  += OnMouseMove;
            Resize     += OnResizeEnd;
            Closing    += OnClosing;

            #endregion

            _callback += RenderChart;
            RenderLoop.Run(this, _callback);
        }
Пример #7
0
        internal override void Run()
        {
            Debug.Assert(InitCallback != null);
            Debug.Assert(RunCallback != null);

            // Initialize the init callback
            InitCallback();

            runRenderCallback = new RenderLoop.RenderCallback(RenderLoopCallback);

            // Run the rendering loop
            try
            {
                // Use custom do events to improve performance and avoid GC caused by Application.DoEvents
                RenderLoop.Run(Control, runRenderCallback);
            }
            finally
            {
                if (ExitCallback != null)
                {
                    ExitCallback();
                }
            }
        }
Пример #8
0
 public void Run(RenderLoop.RenderCallback renderCallback)
 {
     this._form.Show();
     while (this._isAlive)
     {
         if (RenderLoop.UseCustomDoEvents)
         {
             Win32Native.NativeMessage lpMsg;
             while (Win32Native.PeekMessage(out lpMsg, this._windowHandle, 0, 0, 0) != 0)
             {
                 if (Win32Native.GetMessage(out lpMsg, this._windowHandle, 0, 0) == -1)
                 {
                     throw new InvalidOperationException(string.Format((IFormatProvider)CultureInfo.InvariantCulture, "An error happened in rendering loop while processing windows messages. Error: {0}", new object[1]
                     {
                         (object)Marshal.GetLastWin32Error()
                     }));
                 }
                 else
                 {
                     Win32Native.TranslateMessage(ref lpMsg);
                     Win32Native.DispatchMessage(ref lpMsg);
                 }
             }
         }
         else
         {
             Application.DoEvents();
         }
         if (this._isAlive)
         {
             renderCallback();
         }
     }
     this._form.Disposed -= new EventHandler(this._form_Disposed);
     MessageFilterHook.RemoveMessageFilter(this._windowHandle, (IMessageFilter)this);
 }
Пример #9
0
 public static void Run(Form form, RenderLoop.RenderCallback renderMethod)
 {
     RenderLoop.Run(form, renderMethod);
 }
Пример #10
0
        internal override void Run()
        {
            Debug.Assert(InitCallback != null);
            Debug.Assert(RunCallback != null);

            // Initialize the init callback
            InitCallback();

            runRenderCallback = new RenderLoop.RenderCallback(RenderLoopCallback);

            // Run the rendering loop
            try
            {
                // Use custom do events to improve performance and avoid GC caused by Application.DoEvents
                RenderLoop.Run(Control, runRenderCallback);
            }
            finally
            {
                if (ExitCallback != null)
                {
                    ExitCallback();
                }
            }
        }
Пример #11
0
 public static void Run(Control form, RenderLoop.RenderCallback renderCallback)
 {
     new RenderLoop.ProxyNativeWindow(form).Run(renderCallback);
 }
Пример #12
0
 public static void Run(ApplicationContext context, RenderLoop.RenderCallback renderCallback)
 {
     RenderLoop.Run((Control)context.MainForm, renderCallback);
 }
Пример #13
0
        internal override void Run()
        {
            Debug.Assert(InitCallback != null);
            Debug.Assert(RunCallback != null);

            // Initialize the init callback
            InitCallback();

            var runCallback = new RenderLoop.RenderCallback(RunCallback);

            // Run the rendering loop
            try
            {
                RenderLoop.Run(Control, runCallback);
            }
            finally
            {
                if (ExitCallback != null)
                {
                    ExitCallback();
                }
            }
        }
Пример #14
0
 public void StartRender()
 {
     callback = new RenderLoop.RenderCallback(Render);
     RenderLoop.Run(mainRenderForm, callback);
 }
Пример #15
0
 public static void Run(Form form, RenderLoop.RenderCallback mainLoop)
 {
     RenderLoop.Run(form, mainLoop);
 }