public async Task Render_SimpleRoundedRect_Filled_LinearGradient()
        {
            await TestUtilities.InitializeWithGraphicsAsync();

            using (var gradientBrush = new LinearGradientBrushResource(
                       new Vector2(0f, 0f),
                       new Vector2(512f, 0f),
                       new[]
            {
                new GradientStop {
                    Color = Color4.Gray, Position = 0f
                },
                new GradientStop {
                    Color = Color4.White, Position = 0.6f
                },
                new GradientStop {
                    Color = Color4.Black, Position = 1f
                }
            },
                       ExtendMode.Mirror))
                using (var memRenderTarget = new MemoryRenderTarget(1024, 1024))
                {
                    // Perform rendering
                    memRenderTarget.ClearColor = Color4.CornflowerBlue;

                    await memRenderTarget.RenderLoop.Register2DDrawingLayerAsync(graphics =>
                    {
                        // 2D rendering is made here
                        graphics.FillRoundedRectangle(
                            new RectangleF(10, 10, 900, 900), 30, 30,
                            gradientBrush);
                    });

                    await memRenderTarget.AwaitRenderAsync();

                    // Take screenshot
                    var screenshot = await memRenderTarget.RenderLoop.GetScreenshotGdiAsync();

                    // TestUtilities.DumpToDesktop(screenshot, "Blub.png");

                    // Calculate and check difference
                    var diff = BitmapComparison.CalculatePercentageDifference(
                        screenshot, TestUtilities.LoadBitmapFromResource("Drawing2D", "SimpleRoundedRectFilled_LinearGradient.png"));
                    Assert.IsTrue(diff < 0.2, "Difference to reference image is to big!");
                }
        }
Esempio n. 2
0
        public async Task Render_SimpleRoundedRect_Filled_LinearGradient()
        {
            await UnitTestHelper.InitializeWithGrahicsAsync();

            using (LinearGradientBrushResource gradientBrush = new LinearGradientBrushResource(
                       new Vector2(0f, 0f),
                       new Vector2(512f, 0f),
                       new GradientStop[]
            {
                new GradientStop(Color4.Gray, 0f),
                new GradientStop(Color4.White, 0.6f),
                new GradientStop(Color4.Black, 1f)
            },
                       extendMode: ExtendMode.Mirror))
                using (MemoryRenderTarget memRenderTarget = new MemoryRenderTarget(1024, 1024))
                {
                    // Perform rendering
                    memRenderTarget.ClearColor = Color4.CornflowerBlue;
                    await memRenderTarget.RenderLoop.Register2DDrawingLayerAsync((graphics) =>
                    {
                        // 2D rendering is made here
                        graphics.FillRoundedRectangle(
                            new RectangleF(10, 10, 900, 900), 30, 30,
                            gradientBrush);
                    });

                    await memRenderTarget.AwaitRenderAsync();

                    // Take screenshot
                    GDI.Bitmap screenshot = await memRenderTarget.RenderLoop.GetScreenshotGdiAsync();

                    //screenshot.DumpToDesktop("Blub.png");

                    // Calculate and check difference
                    float diff = BitmapComparison.CalculatePercentageDifference(
                        screenshot, Properties.Resources.ReferenceImage_SimpleRoundedRectFilled_LinearGradient);
                    Assert.True(diff < 0.2, "Difference to reference image is to big!");
                }
        }