Browse Source

Initial implementation of DrawingImage.

pull/3378/head
Steven Kirk 7 years ago
parent
commit
6bd9ca8fa3
  1. 6
      src/Avalonia.Visuals/Media/Drawing.cs
  2. 3
      src/Avalonia.Visuals/Media/DrawingGroup.cs
  3. 29
      src/Avalonia.Visuals/Media/DrawingImage.cs

6
src/Avalonia.Visuals/Media/Drawing.cs

@ -1,4 +1,6 @@
namespace Avalonia.Media using Avalonia.Platform;
namespace Avalonia.Media
{ {
public abstract class Drawing : AvaloniaObject public abstract class Drawing : AvaloniaObject
{ {
@ -6,4 +8,4 @@
public abstract Rect GetBounds(); public abstract Rect GetBounds();
} }
} }

3
src/Avalonia.Visuals/Media/DrawingGroup.cs

@ -1,5 +1,6 @@
using Avalonia.Collections; using Avalonia.Collections;
using Avalonia.Metadata; using Avalonia.Metadata;
using Avalonia.Platform;
namespace Avalonia.Media namespace Avalonia.Media
{ {
@ -55,4 +56,4 @@ namespace Avalonia.Media
return rect; return rect;
} }
} }
} }

29
src/Avalonia.Visuals/Media/DrawingImage.cs

@ -0,0 +1,29 @@
using Avalonia.Platform;
using Avalonia.Visuals.Media.Imaging;
namespace Avalonia.Media
{
public class DrawingImage : AvaloniaObject, IImage
{
public static readonly StyledProperty<Drawing> DrawingProperty =
AvaloniaProperty.Register<DrawingImage, Drawing>(nameof(Drawing));
public Drawing Drawing
{
get => GetValue(DrawingProperty);
set => SetValue(DrawingProperty, value);
}
public Size Size => Drawing?.GetBounds().Size ?? default;
public void Draw(
DrawingContext context,
double opacity,
Rect sourceRect,
Rect destRect,
BitmapInterpolationMode bitmapInterpolationMode)
{
Drawing?.Draw(context);
}
}
}
Loading…
Cancel
Save