Browse Source

Implement VisualBrush alignment.

pull/111/head
Steven Kirk 11 years ago
parent
commit
4f200bedb3
  1. 4
      src/Windows/Perspex.Direct2D1/Media/VisualBrushImpl.cs
  2. 1
      tests/Perspex.RenderTests/Media/VisualBrushTests.cs
  3. BIN
      tests/TestFiles/Direct2D1/Media/VisualBrush/VisualBrush_Align_Center.expected.png

4
src/Windows/Perspex.Direct2D1/Media/VisualBrushImpl.cs

@ -6,6 +6,7 @@
namespace Perspex.Direct2D1.Media
{
using System;
using Perspex.Layout;
using Perspex.Media;
using SharpDX.Direct2D1;
@ -30,6 +31,7 @@ namespace Perspex.Direct2D1.Media
var sourceSize = layoutable.Bounds.Size;
var destinationRect = brush.DestinationRect.ToPixels(destinationSize);
var scale = brush.Stretch.CalculateScaling(destinationRect.Size, sourceSize);
var translate = new Rect(destinationSize).CenterIn(new Rect(sourceSize * scale)).Position;
using (var brt = new BitmapRenderTarget(
target,
@ -37,7 +39,7 @@ namespace Perspex.Direct2D1.Media
destinationRect.Size.ToSharpDX()))
{
var renderer = new Renderer(brt);
renderer.Render(visual, null, Matrix.Identity, Matrix.CreateScale(scale));
renderer.Render(visual, null, Matrix.CreateTranslation(translate), Matrix.CreateScale(scale));
this.PlatformBrush = new BitmapBrush(brt, brt.Bitmap);
}
}

1
tests/Perspex.RenderTests/Media/VisualBrushTests.cs

@ -70,6 +70,7 @@ namespace Perspex.Direct2D1.RenderTests.Media
{
AlignmentX = AlignmentX.Center,
AlignmentY = AlignmentY.Center,
Stretch = Stretch.None,
Visual = new Border
{
Width = 92,

BIN
tests/TestFiles/Direct2D1/Media/VisualBrush/VisualBrush_Align_Center.expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 B

Loading…
Cancel
Save