csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.4 KiB
47 lines
1.4 KiB
using System;
|
|
using Avalonia.Media;
|
|
using Avalonia.Platform;
|
|
using Avalonia.VisualTree;
|
|
|
|
namespace Avalonia.Rendering
|
|
{
|
|
public class RenderLayer
|
|
{
|
|
private readonly IDrawingContextImpl _drawingContext;
|
|
|
|
public RenderLayer(
|
|
IDrawingContextImpl drawingContext,
|
|
Size size,
|
|
double scaling,
|
|
IVisual layerRoot)
|
|
{
|
|
_drawingContext = drawingContext;
|
|
Bitmap = drawingContext.CreateLayer(size);
|
|
Size = size;
|
|
Scaling = scaling;
|
|
LayerRoot = layerRoot;
|
|
}
|
|
|
|
public IRenderTargetBitmapImpl Bitmap { get; private set; }
|
|
public double Scaling { get; private set; }
|
|
public Size Size { get; private set; }
|
|
public IVisual LayerRoot { get; }
|
|
|
|
public void ResizeBitmap(Size size, double scaling)
|
|
{
|
|
if (Size != size || Scaling != scaling)
|
|
{
|
|
var resized = _drawingContext.CreateLayer(size);
|
|
|
|
using (var context = resized.CreateDrawingContext(null))
|
|
{
|
|
context.Clear(Colors.Transparent);
|
|
context.DrawImage(Bitmap, 1, new Rect(Size), new Rect(Size));
|
|
Bitmap.Dispose();
|
|
Bitmap = resized;
|
|
Size = size;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|