forked from amkovkov/GranuSightSoftware2
feat: CameraView control properties
This commit is contained in:
@@ -13,7 +13,7 @@ using Avalonia.Threading;
|
||||
using Avalonia.Input;
|
||||
|
||||
using GSS2.UI.Core.ViewModels;
|
||||
using System.ComponentModel;
|
||||
using Avalonia.Markup.Xaml;
|
||||
|
||||
namespace GSS2.UI.Core.Views;
|
||||
|
||||
@@ -196,9 +196,29 @@ public partial class CameraView : OpenGlControlBase
|
||||
private float _panX = 0;
|
||||
private float _panY = 0;
|
||||
|
||||
public static readonly StyledProperty<Color> BackgroundProperty = AvaloniaProperty.Register<CameraView, Color>(nameof(Background), defaultValue: Colors.Transparent);
|
||||
public Color Background
|
||||
{
|
||||
get => GetValue(BackgroundProperty);
|
||||
set => SetValue(BackgroundProperty, value);
|
||||
}
|
||||
public static readonly StyledProperty<Stretch> StretchModeProperty = AvaloniaProperty.Register<CameraView, Stretch>(nameof(StretchMode), defaultValue: Stretch.Uniform);
|
||||
public Stretch StretchMode
|
||||
{
|
||||
get => GetValue(StretchModeProperty);
|
||||
set => SetValue(StretchModeProperty, value);
|
||||
}
|
||||
public static readonly StyledProperty<TileMode> TileModeProperty = AvaloniaProperty.Register<CameraView, TileMode>(nameof(TileMode), defaultValue: TileMode.None);
|
||||
public TileMode TileMode
|
||||
{
|
||||
get => GetValue(TileModeProperty);
|
||||
set => SetValue(TileModeProperty, value);
|
||||
}
|
||||
|
||||
public CameraView(ILogger<CameraView> logger)
|
||||
{
|
||||
_logger = logger;
|
||||
AvaloniaXamlLoader.Load(this);
|
||||
_logger.LogInformation("{} initialized", nameof(CameraView));
|
||||
}
|
||||
|
||||
@@ -219,7 +239,6 @@ public partial class CameraView : OpenGlControlBase
|
||||
}
|
||||
else
|
||||
_logger.LogCritical("Cannot start view finder, data context is null or not camera view model");
|
||||
|
||||
base.OnAttachedToVisualTree(ea);
|
||||
}
|
||||
protected override void OnDetachedFromLogicalTree(LogicalTreeAttachmentEventArgs ea)
|
||||
@@ -339,8 +358,7 @@ public partial class CameraView : OpenGlControlBase
|
||||
|
||||
public override void Render(DrawingContext context)
|
||||
{
|
||||
var backgroundColor = (DataContext as CameraViewModel)?.BackgroundColor ?? Colors.Transparent;
|
||||
context.FillRectangle(new SolidColorBrush(backgroundColor), new Rect(0, 0, Bounds.Width, Bounds.Height));
|
||||
context.FillRectangle(new SolidColorBrush(Background), new Rect(0, 0, Bounds.Width, Bounds.Height));
|
||||
base.Render(context);
|
||||
}
|
||||
private void RenderReqested(object? sender, EventArgs ea) => Dispatcher.UIThread.Invoke(() => RequestNextFrameRendering());
|
||||
@@ -425,8 +443,8 @@ public partial class CameraView : OpenGlControlBase
|
||||
return;
|
||||
}
|
||||
|
||||
var stretchMode = (DataContext as CameraViewModel)?.StretchMode ?? Stretch.Uniform;
|
||||
var tileMode = (DataContext as CameraViewModel)?.TileMode ?? TileMode.None;
|
||||
var stretchMode = StretchMode;
|
||||
var tileMode = TileMode;
|
||||
|
||||
// 1. Очищаем экран
|
||||
gl.Viewport(0, 0, (int)Bounds.Width, (int)Bounds.Height);
|
||||
|
||||
Reference in New Issue
Block a user