Exemple #1
0
 public void Draw(Scene ActiveScene)
 {
     _RenderTarget.BeginDraw();
     _RenderTarget.Clear(_ClearColor);
     ActiveScene.Draw(this);
     _RenderTarget.EndDraw();
 }
Exemple #2
0
        public void DisplayGrayCode(int i)
        {
            var image = grayCodeImages[i];

            bitmap.CopyFromMemory(image.DataIntPtr, image.Width * 4);
            renderTarget.BeginDraw();
            renderTarget.DrawBitmap(bitmap, 1.0f, BitmapInterpolationMode.Linear);
            renderTarget.EndDraw();
            //Console.WriteLine("displaying Gray code " + i);
        }
 /// <summary>
 /// Выводит текст на экран. Должен вызываться последним после всех остальных операций по Рендерингу. Перед метордом Презент Свапчейна.
 /// </summary>
 /// <param name="text">Текст который будет рисоваться.</param>
 /// <param name="x">Отступ текста от левого края экрана, в пикселях.</param>
 /// <param name="y">Отступ текста от верхнего края экрана, в пикселях.</param>
 /// <param name="width">Ширина области в которую будет выводиться текст</param>
 /// <param name="height">Высота области в которую будет выводиться текст</param>
 public void DrawText(string text, float x = 0, float y = 0, float width = 400, float height = 300)
 {
     _RenderTarget2D.BeginDraw();
     _RenderTarget2D.DrawText(
         text, text.Length,
         _TextFormat,
         new RectangleF(x, y, width, height),
         _SceneColorBrush,
         DrawTextOptions.None,
         MeasuringMode.GdiClassic);
     //  RenderTarget2D.DrawTextLayout(new Vector2(0, 0), TextLayout, SceneColorBrush, DrawTextOptions.None);
     _RenderTarget2D.EndDraw();
 }
Exemple #4
0
        public void Draw()
        {
            target.BeginDraw();

            try {
                this.map.Draw(this.target);
            }
            catch {
                Console.WriteLine("Exception in graphic engine");
            }

            foreach (var item in FloatingObjectRegistry.GetMovingObjects())
            {
                item.Draw(this.target);
            }
            foreach (var player in players)
            {
                if (player.ShouldDraw())
                {
                    player.Draw(this.target);
                }
            }

            target.EndDraw();
        }
Exemple #5
0
        private void Render()
        {
            frameAccumulator += FrameDelta;
            frameCount++;
            if (frameAccumulator >= 1.0f)
            {
                FramesPerSecond  = frameCount / frameAccumulator;
                frameAccumulator = 0.0f;
                frameCount       = 0;
            }

            BeginDraw();

            Device.Rasterizer.SetViewports(new Viewport(0, 0, form.Width, form.Height));
            Device.OutputMerger.SetTargets(BackBufferView);
            RenderTarget.BeginDraw();
            RenderTarget.Clear(SceneColorBrush.Color);

            Draw(clock);

            RenderTarget.EndDraw();
            swapChain.Present(0, PresentFlags.None);

            EndDraw();
        }
Exemple #6
0
        /// <summary>
        /// Renders the scene to the given render target.
        /// Clears the scene, then draws all shapes
        /// </summary>
        /// <param name="renderTarget">The render target.</param>
        private void RenderScene(RenderTarget renderTarget)
        {
            Cursor c = null;

            if (renderMode != RenderModes.HwndRenderTarget)
            {
                c      = Cursor;
                Cursor = Cursors.WaitCursor;
            }
            renderTarget.BeginDraw();
            renderTarget.Clear(BackColorF);

            for (int i = 0; i < drawingShapes.Count; i++)
            {
                DrawingShape shape = drawingShapes[i];
                //tag with shape index for debugging
                renderTarget.Tags = new Tags((ulong)i, 0);
                shape.Draw(renderTarget);
            }
            Tags      tags;
            ErrorCode errorCode;

            if (!renderTarget.TryEndDraw(out tags, out errorCode))
            {
                Debug.WriteLine(String.Format("Failed EndDraw. Error: {0}, tag1: {1}, tag2: {2}, shape[{1}]: {3}",
                                              errorCode, tags.Tag1, tags.Tag2,
                                              (int)tags.Tag1 < drawingShapes.Count ? drawingShapes[(int)tags.Tag1].ToString() : "<none>"));
            }
            if (renderMode != RenderModes.HwndRenderTarget)
            {
                Cursor = c;
            }
        }
Exemple #7
0
        private void Draw()
        {
            while (true)
            {
                if (token.IsCancellationRequested)
                {
                    return;
                }
                lock (Locker)
                {
                    //if (Disposed)
                    //    return;
                    rt.BeginDraw();
                    rt.Clear();

                    if (Redraw)
                    {
                        Elements.Draw(rt);
                        Redraw = false;
                    }
                    else
                    {
                        Elements.DrawChangedLayers(rt);
                    }

                    rt.EndDraw();
                }
                Thread.Sleep(UpdateInterval);
            }
        }
Exemple #8
0
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (RenderTarget.IsDisposed)
            {
                return;
            }
            drawCount++;
            if (drawCount == 10000)
            {
                GC.Collect();
                drawCount = 0;
            }
            //Thread.Sleep(45);
            // Begin rendering
            RenderTarget.BeginDraw();
            RenderTarget.Clear(colorBack);

            layerBack.Draw();
            layerParticle.Draw();
            layerClock.Draw();

            // End drawing
            RenderTarget.EndDraw();

            //Left = (int)(Location.X + (Width - ClientSize.Width) / 2f);
            //Right = Left + ClientSize.Width;
            //Top = (int)(Location.Y + (Height - ClientSize.Height) - 8f);
            //Bottom = Top + ClientSize.Height;

            this.Invalidate();
        }
        private void RenderBuffers()
        {
            if (_indexBuffer == null || _vertexBuffer == null)
            {
                return;
            }
            var context = _tileTexture2D.Device.ImmediateContext;

            _renderTarget2D.BeginDraw();
            _renderTarget2D.Clear(SharpDX.Color.Red);

            context.InputAssembler.InputLayout       = _inputLayout;
            context.InputAssembler.PrimitiveTopology = PrimitiveTopology.TriangleList;
            context.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(_vertexBuffer, 16 + 16 + 12, 0));
            context.InputAssembler.SetIndexBuffer(_indexBuffer, Format.R16_UInt, 0);
            context.VertexShader.Set(_vertexShader);
            context.Rasterizer.SetViewport(new Viewport(0, 0, 256, 256));
            context.PixelShader.Set(_pixelShader);
            context.OutputMerger.SetTargets(_renderTargetView);
            context.OutputMerger.ResetTargets();
            // int indexBufferTriangleCount = _indexBuffer.Description.SizeInBytes / _indexBuffer.Description.StructureByteStride / 3;
            context.DrawIndexed(_triangleCount, 0, 0);

            _renderTarget2D.EndDraw();
        }
Exemple #10
0
        public void Render(SwapChain swapChain, ref Viewport viewport, hkaBone selected_bone, string anim_filename)
        {
            Size2 size = new Size2(viewport.Width, viewport.Height);

            CreateDeviceResources(swapChain);

            renderTarget.BeginDraw();

            DrawCenterAxis();

            DrawBoneTree();
            DrawSelectedBone(selected_bone);

            DrawText(anim_filename, ref size);

            try
            {
                renderTarget.EndDraw();
            }
            catch (SharpDXException ex) when((uint)ex.HResult == 0x8899000C)  // D2DERR_RECREATE_TARGET
            {
                // device has been lost!
                DiscardDeviceResources();
            }
        }
        public frmWindow()
        {
            BackColor = new GCSColor(System.Drawing.Color.Blue);

            Loop = new Loop();

            Form            = new RenderForm();
            Form.Text       = "GlancesClientSharp";
            Form.Width      = 800;
            Form.Height     = 600;
            Form.ResizeEnd += (o, e) => InitDevice();
            Form.Shown     += (_, e) =>
            {
                Loop.LogicTick += (o, te) =>
                {
                    OnLogicTick(te);
                };
                Loop.DrawTick += (o, te) =>
                {
                    if (RenderTarget != null)
                    {
                        RenderTarget.BeginDraw();
                        OnDrawTick(te);
                        RenderTarget.EndDraw();
                    }
                };
                if (RenderTarget == null || RenderTarget.IsDisposed)
                {
                    InitDevice();
                }
            };
            Loop.RunAsync();

            //Form.Show();
        }
        protected override void Draw()
        {
            RenderTarget.BeginDraw();
            RenderTarget.Transform = Matrix3x2.Identity;
            Random random = new Random();

            RenderTarget.Clear(new Color4(0.5f, 0.5f, 0.5f, 0.0f));
            RenderTarget.AntialiasMode = AntialiasMode.Aliased;
            StrokeStyleProperties properties = new StrokeStyleProperties();

            properties.LineJoin = LineJoin.MiterOrBevel;
            StrokeStyle strokeStyle = new StrokeStyle(RenderTarget.Factory, properties);

            foreach (DirectPath path in paths)
            {
                if (path.Geometry != null && path.Brush != null)
                {
                    if (path is DirectPathScatter)
                    {
                        (path as DirectPathScatter).RenderScatterGeometry(RenderTarget);
                    }
                    else
                    {
                        if (path.QuickStrokeDash != QuickStrokeDash.None)
                        {
                            RenderTarget.DrawGeometry(path.Geometry, path.Brush, (float)path.StrokeThickness, strokeStyle);
                        }
                    }
                }
            }
            RenderTarget.EndDraw();
            graphicsDeviceService10.CopyTextureAcross();
            graphicsDeviceService10.Device.Flush();
        }
Exemple #13
0
        private void PrepareAndCallRender()
        {
            var device = this.Device;

            if (device == null)
            {
                return;
            }

            var renderTarget = this.RenderTarget;

            if (renderTarget == null)
            {
                return;
            }

            var targetWidth  = renderTarget.Description.Width;
            var targetHeight = renderTarget.Description.Height;

            device.Rasterizer.SetViewports(new Viewport(0, 0, targetWidth, targetHeight, 0.0f, 1.0f));

            // Does the acttual rendering
            m_d2dRenderTarget.BeginDraw();
            this.Render(m_d2dRenderTarget);
            m_d2dRenderTarget.EndDraw();

            this.ShowFramesPerSecondsOnDebug();

            device.Flush();
        }
 protected override void PreDraw()
 {
     Thread.Sleep(20);
     _device.ImmediateContext.Rasterizer.SetViewport(new Viewport(0, 0, Width, Height));
     _device.ImmediateContext.OutputMerger.SetTargets(_backBufferView);
     _rt.BeginDraw();
 }
Exemple #15
0
        public void Draw()
        {
            lock (_drawLock)
            {
                if (_ui == null || d2dRenderTarget == null || !_ui.ready)
                {
                    return;
                }
                d2dRenderTarget.BeginDraw();
                d2dRenderTarget.Clear(Color.Gray);

                if (_ui.gameStarted)
                {
                    int stride = UI.GameWidth * 4;
                    gameBitmap.CopyFromMemory(_ui.rawBitmap, stride);

                    d2dRenderTarget.DrawBitmap(gameBitmap, clientArea, 1f,
                                               _ui._filterMode == UI.FilterMode.Linear
                            ? BitmapInterpolationMode.Linear
                            : BitmapInterpolationMode.NearestNeighbor);
                }

                d2dRenderTarget.EndDraw();
                swapChain.Present(0, PresentFlags.None);
            }
        }
Exemple #16
0
 /// <summary>
 /// Beginning of our draw calls
 /// </summary>
 private static void BeginDrawing()
 {
     _renderTarget.BeginDraw();
     _renderTarget.AntialiasMode     = AntialiasMode.Aliased;
     _renderTarget.TextAntialiasMode = SharpDX.Direct2D1.TextAntialiasMode.Aliased;
     _renderTarget.Transform         = Matrix3x2.Identity;
 }
        private void OnRenderCallback()
        {
            d2dRenderTarget.BeginDraw();

            d2dRenderTarget.Clear(Color.Black);

            d2dRenderTarget.SaveDrawingState(drawingStateBlock);

            d2dRenderTarget.Transform = this.transformation;

            //    renderPolygon(this.leftEyebrow);
            //    renderPolygon(this.leftEye);
            //    renderPolygon(this.leftPupil);
            //    renderPolygon(this.rightEyebrow);
            //    renderPolygon(this.rightEye);
            //    renderPolygon(this.rightPupil);
            //    renderPolygon(this.mouth);
            //    renderPolygon(this.nose);

            //renderPolygon(this.facePoints);
            renderPoints(facePoints);

            d2dRenderTarget.RestoreDrawingState(drawingStateBlock);

            if (this.showDebugInfo)
            {
                renderDebugInfo();
            }

            d2dRenderTarget.EndDraw();

            swapChain.Present(0, PresentFlags.None);

            framesPerSecond.Frame();
        }
        protected override void BeginRender()
        {
            base.BeginRender();

            _renderTarget2D.BeginDraw();
            _renderTarget2D.Clear(Color.Orange);
        }
Exemple #19
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DrawingContext"/> class.
 /// </summary>
 /// <param name="renderTarget">The render target to draw to.</param>
 /// <param name="directWriteFactory">The DirectWrite factory.</param>
 public DrawingContext(
     RenderTarget renderTarget,
     SharpDX.DirectWrite.Factory directWriteFactory)
 {
     _renderTarget       = renderTarget;
     _directWriteFactory = directWriteFactory;
     _renderTarget.BeginDraw();
 }
Exemple #20
0
 public void Paint(RenderTarget target)
 {
     target.BeginDraw();
     target.Transform = Matrix3x2.Identity;
     // Render scene
     Sequencer.Render(target);
     target.EndDraw();
 }
 internal void NextFrame()
 {
     drawer.BeginDraw();
     drawer.Clear(Color.Black);
     sight.Draw();
     drawer.EndDraw();
     swapChain.Present(0, PresentFlags.None);
 }
Exemple #22
0
 public void Run()
 {
     RenderTarget.BeginDraw();
     if (window.BackgroundColor.A > 0)
     {
         RenderTarget.Clear(new Color4(window.BackgroundColor.PackedArgb));
     }
 }
Exemple #23
0
        public void Draw()
        {
            RenderTarget2D.BeginDraw();
            KeyboardState kbs = _keyboard.GetCurrentState();//_keyboard.Poll();

            foreach (var key in kbs.PressedKeys)
            {
                if (key == Key.Tab)
                {
                    _isTabPressed = true;
                }
                else if (key == Key.F)
                {
                    if (!_isFPressed)
                    {
                        _isFPressed = true;
                    }
                    else
                    {
                        _isFPressed = false;
                    }
                }
                else if (key == Key.Return)
                {
                    _isEnterPressed = true;
                }
            }

            //Drawing a gama
            if (_isEnterPressed)
            {
                _gameRender.DrawMap(_spectatorClass.Map);
                _gameRender.DrawInteractiveObjects(_spectatorClass.Map.InteractObjects);
                _gameRender.DrawClientInfo();
            }

            if (_spectatorClass.Map != null && !_isEnterPressed)
            {
                _gameRender.DrawLogo();
            }

            if (_spectatorClass.Map == null)
            {
                _gameRender.DrawWaitingLogo();
            }

            if (_isTabPressed)
            {
                //_gameRender.DrawClientsInfo();
            }
            if (_isFPressed)
            {
                _gameRender.DrawFPS();
            }

            RenderTarget2D.EndDraw();
            SwapChain.Present(0, PresentFlags.None);
        }
Exemple #24
0
    public void Compose(RenderTarget renderTarget, FrameworkElement fe)
    {
        renderTarget.BeginDraw();
        Do your rendering here
        renderTarget.Clear(new Color(0, 0, 0, 0));

        Render(renderTarget, fe, fe);
        renderTarget.EndDraw();
    }
Exemple #25
0
 protected void Draw()
 {
     d2dRenderTarget.BeginDraw();
     d2dRenderTarget.Clear(Color.Black);
     apple.Draw(d2dRenderTarget, d2dFactory);
     snake.Draw(d2dRenderTarget, d2dFactory);
     d2dRenderTarget.EndDraw();
     swapChain.Present(0, PresentFlags.None);
 }
        public void DrawText(string text, float x0 = 0, float y0 = 0, float x1 = 200, float y1 = 200)
        {
            _sw.Stop();
            string s = string.Format("FPS : {0:#####}", 1000.0f / _sw.Elapsed.TotalMilliseconds);

            _sw.Reset();
            _sw.Start();
            s = s + "  " + text;
            _RenderTarget2D.BeginDraw();
            _RenderTarget2D.DrawText(
                s, s.Length,
                _TextFormat,
                new RectangleF(x0, y0, x1, y1),
                _SceneColorBrush,
                DrawTextOptions.None,
                MeasuringMode.GdiClassic);
            //  _RenderTarget2D.DrawTextLayout(new Vector2(300, 300), _TextLayout, _SceneColorBrush, DrawTextOptions.None);
            _RenderTarget2D.EndDraw();
        }
Exemple #27
0
 public void Draw()
 {
     d2dRenderTarget.BeginDraw();
     d2dRenderTarget.FillGeometry(LayoutRect, LayoutBrush);
     d2dRenderTarget.FillGeometry(TextRect, TextRectangleBrush, null);
     //  d2dRenderTarget.DrawText("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", TextFormat, new RawRectangleF(10, gameInst.RenderForm.Height - 40, gameInst.RenderForm.Width - 10 * 4, gameInst.RenderForm.Height-80), TextBrush, DrawTextOptions.Clip);
     d2dRenderTarget.DrawTextLayout(new Vector2(10.0f, gameInst.RenderForm.Height - 80.0f), ConsoleLayout, TextBrush, DrawTextOptions.Clip);
     d2dRenderTarget.DrawTextLayout(new Vector2(10.0f, 40), HistoryLayout, TextBrush, DrawTextOptions.Clip);
     d2dRenderTarget.EndDraw();
 }
Exemple #28
0
 public void Draw(Action drawActions)
 {
     Device.ImmediateContext.OutputMerger.SetTargets(DepthStencilView, RenderTargetView);
     Device.ImmediateContext.ClearDepthStencilView(DepthStencilView, DepthStencilClearFlags.Depth, 1.0f, 0);
     Device.ImmediateContext.ClearRenderTargetView(RenderTargetView, Color.CornflowerBlue);
     RenderTarget2D.BeginDraw();
     drawActions();
     RenderTarget2D.EndDraw();
     SwapChain.Present(0, PresentFlags.None);
 }
Exemple #29
0
        private void saveButton_Click(object sender, EventArgs e)
        {
            if (renderTarget == null)
            {
                // Should not happen
                MessageBox.Show("Unable to save file.");
                return;
            }

            SaveFileDialog saveDlg = new SaveFileDialog();

            saveDlg.Filter = "Bitmap image (*.bmp)|*.bmp|Png image (*.png)|*.png|Jpeg image (*.jpg)|*.jpg|Gif image (*.gif)|*.gif";
            if (DialogResult.OK == saveDlg.ShowDialog())
            {
                SizeU size = new SizeU((uint)ClientSize.Width, (uint)ClientSize.Height);

                ImagingBitmap wicBitmap = wicFactory.CreateImagingBitmap(
                    size.Width,
                    size.Height,
                    PixelFormats.Bgr32Bpp,
                    BitmapCreateCacheOption.CacheOnLoad);

                D2DBitmap d2dBitmap = renderTarget.CreateBitmap(size, new BitmapProperties(new PixelFormat(Microsoft.WindowsAPICodePack.DirectX.Graphics.Format.B8G8R8A8UNorm, AlphaMode.Ignore), renderTarget.Dpi.X, renderTarget.Dpi.Y));
                d2dBitmap.CopyFromRenderTarget(renderTarget);

                RenderTarget wicRenderTarget =
                    d2dFactory.CreateWicBitmapRenderTarget(wicBitmap, renderProps);

                wicRenderTarget.BeginDraw();

                wicRenderTarget.DrawBitmap(d2dBitmap);
                wicRenderTarget.EndDraw();

                Guid fileType;
                switch (saveDlg.FilterIndex)
                {
                case 1: fileType = ContainerFormats.Bmp;
                    break;

                case 2: fileType = ContainerFormats.Png;
                    break;

                case 3: fileType = ContainerFormats.Jpeg;
                    break;

                case 4: fileType = ContainerFormats.Gif;
                    break;

                default: fileType = ContainerFormats.Bmp;     // default to bitmap files
                    break;
                }

                wicBitmap.SaveToFile(wicFactory, fileType, saveDlg.FileName);
            }
        }
        public void Create3dObjects()

        {
            //Create RenderWindow
            RenderWindowInstance = new ModelRenderWindow();
            FormInstance         = RenderWindowInstance.CreateWindow(1080, 1240, FormStartPosition.CenterScreen);

            //Create SwapChain
            SwapChainCreator = new ModelSwapChainDesc();
            SwapChainD       = SwapChainCreator.CreateSwapChain(2, Usage.RenderTargetOutput, FormInstance.Handle, true, 0, 0, new Rational(60, 1), Format.R8G8B8A8_UNorm, 1, 0, SwapChainFlags.AllowModeSwitch, SwapEffect.Discard);

            //Create Device
            Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, SwapChainD, out GraphicsDevice, out NewSwapChain);

            //Create Back buffer
            BackBuffer = Surface.FromSwapChain(NewSwapChain, 0);

            //Create Factory
            FactoryD2D FactoryInstance = new FactoryD2D();

            //Create RenderTarget
            RenderTargetInstance = new ModelRenderTarget();
            RenderTarget         = RenderTargetInstance.CreateRenderTarget(SharpDX.Direct2D1.FeatureLevel.Level_DEFAULT, new PixelFormat(Format.Unknown, SharpDX.Direct2D1.AlphaMode.Ignore), RenderTargetType.Default, RenderTargetUsage.None, BackBuffer, FactoryInstance);


            RenderLoop.Run(FormInstance, () =>
            {
                RenderTarget.BeginDraw();
                RenderTarget.Transform = Matrix3x2.Identity;
                RenderTarget.Clear(Color.White);

                using (var brush = new SolidColorBrush(RenderTarget, Color.Red))
                {
                    //for (int x = 0; x < RenderTarget.Size.Width; x += 10)
                    //    RenderTarget.DrawLine(new Vector2(x, 0), new Vector2(x, RenderTarget.Size.Height), brush, 0.5f);

                    //for (int y = 0; y < RenderTarget.Size.Height; y += 10)
                    //    RenderTarget.DrawLine(new Vector2(0, y), new Vector2(RenderTarget.Size.Width, y), brush, 0.5f);
                    RenderTarget.DrawLine(new Vector2(300, 10), new Vector2(300, 300), brush, 1.5f);
                    // RenderTarget.FillRectangle(new RectangleF(RenderTarget.Size.Width / 2 - 50, RenderTarget.Size.Height / 2 - 50, 100, 100), brush);
                }

                //  RenderTarget.DrawRectangle(
                // new RectangleF(RenderTarget.Size.Width / 2 - 100, RenderTarget.Size.Height / 2 - 100, 200, 200),
                // new SolidColorBrush(RenderTarget, Color.CornflowerBlue));

                RenderTarget.EndDraw();

                NewSwapChain.Present(0, PresentFlags.None);
            });

            RenderTarget.Dispose();
            NewSwapChain.Dispose();
            GraphicsDevice.Dispose();
        }
Exemple #31
0
 public void Paint(RenderTarget target)
 {
     target.BeginDraw();
     target.Transform = Matrix3x2.Identity;
     // Render scene
     Sequencer.Render(target);
     target.EndDraw();
 }
Exemple #32
0
		private static void RenderBegin(RenderTarget renderTarget)
		{
			renderTarget.BeginDraw();
			renderTarget.Transform = Matrix3x2.Identity;
			renderTarget.Clear(new Color4(1.0f, 1.0f, 1.0f));
		}
        /// <summary>
        /// Renders the scene to the given render target.
        /// Clears the scene, then draws all shapes
        /// </summary>
        /// <param name="renderTarget">The render target.</param>
        private void RenderScene(RenderTarget renderTarget)
        {
            Cursor c = null;
            if (renderMode != RenderModes.HwndRenderTarget)
            {
                c = Cursor;
                Cursor = Cursors.WaitCursor;
            }
            renderTarget.BeginDraw();
            renderTarget.Clear(BackColorF);

            for (int i = 0; i < drawingShapes.Count; i++)
            {
                DrawingShape shape = drawingShapes[i];
                //tag with shape index for debugging
                renderTarget.Tags = new Tags((ulong)i, 0);
                shape.Draw(renderTarget);
            }
            Tags tags;
            ErrorCode errorCode;
            if (!renderTarget.TryEndDraw(out tags, out errorCode))
            {
                Debug.WriteLine(String.Format("Failed EndDraw. Error: {0}, tag1: {1}, tag2: {2}, shape[{1}]: {3}",
                    errorCode, tags.Tag1, tags.Tag2,
                    (int)tags.Tag1 < drawingShapes.Count ? drawingShapes[(int)tags.Tag1].ToString() : "<none>"));
            }
            if (renderMode != RenderModes.HwndRenderTarget)
                Cursor = c;
        }
Exemple #34
0
        public void Paint(RenderTarget target)
        {
            target.BeginDraw();
            target.Transform = Matrix3x2.Identity;
            if (Fancy)
                target.FillRectangle(BackgroundGradient, new RectangleF(PointF.Empty, target.Size));
            else
                target.Clear(Color.Black);
            #region draw_notes
            lock (notes)
            {
                foreach (Note n in notes)
                {
                    float wheelOffset = (Keyboard.Pitchwheel[n.Channel] - 8192) / 8192f * 2 * KeyWidth;
                    float bottom = n.Position + n.Length;
                    float left = n.Key * KeyWidth + (bottom >= KeyboardY ? wheelOffset : 0);
                    if (Fancy)
                    {
                        NoteRoundRect.Left = left;
                        NoteRoundRect.Top = n.Position;
                        NoteRoundRect.Right = left + KeyWidth;
                        NoteRoundRect.Bottom = bottom;

                        float alpha = n.Velocity / 127f * (Keyboard.ChannelVolume[n.Channel] / 127f);
                        alpha *= alpha;
                        var gradientBrush = ChannelGradientBrushes[n.Channel];
                        gradientBrush.Opacity = alpha;
                        GradientPoint.X = NoteRoundRect.Left;
                        gradientBrush.StartPoint = GradientPoint;
                        GradientPoint.X = NoteRoundRect.Right;
                        gradientBrush.EndPoint = GradientPoint;
                        target.FillRoundedRectangle(ChannelGradientBrushes[n.Channel], NoteRoundRect);
                    }
                    else
                    {
                        NoteRect.X = left;
                        NoteRect.Y = n.Position;
                        NoteRect.Width = KeyWidth;
                        NoteRect.Height = n.Length;
                        target.FillRectangle(ChannelBrushes[n.Channel], NoteRect);
                    }
                }
            }
            #endregion

            Keyboard.Render(target);

            // Draw time progress bar
            if (sequence?.GetLength() > 0)
            {
                float percentComplete = 1f*sequencer.Position/sequence.GetLength();
                target.FillRectangle(DefaultBrushes[5],
                    new RectangleF(ProgressBarBounds.X, ProgressBarBounds.Y, ProgressBarBounds.Width*percentComplete, ProgressBarBounds.Height));
                target.DrawRectangle(DefaultBrushes[2], ProgressBarBounds, .8f);
            }


            string[] debug =
            {
                "      file: " + MIDIFile,
                "note_count: " + notes.Count,
                "  renderer: " + (Fancy ? "fancy" : UserFancy ? "forced-fast" : "fast"),
                "      note: " + (sequence == null ? "? / ?" : sequencer.Position + " / " + sequence.GetLength()),
                "     delay: " + Delay
            };
            string debugText = debug.Aggregate("", (current, ss) => current + ss + '\n');
            target.DrawText(debugText, DebugFormat, DebugRectangle, DefaultBrushes[0], DrawTextOptions.None, MeasuringMethod.Natural);

            if (Loading == 0)
                target.DrawText("INITIALIZING MIDI DEVICES", HugeFormat, FullRectangle, DefaultBrushes[0], DrawTextOptions.None, MeasuringMethod.Natural);
            else if (Loading > 0)
                target.DrawText("LOADING " + Loading + "%", HugeFormat, FullRectangle, DefaultBrushes[0], DrawTextOptions.None, MeasuringMethod.Natural);
            target.EndDraw();
        }