Hi.Wpf/Disp/RenderingWindow.cs
2025-04-14 17:03:39 +08:00

57 lines
1.7 KiB
C#

using Hi.Disp;
using Hi.Licenses;
using System;
using System.Windows;
using System.Windows.Media;
namespace Hi.Wpf.Disp
{
/// <summary>
/// Window for 3D rendering.
/// </summary>
public class RenderingWindow : Window, IGetDispEngine
{
/// <summary>
/// Gets the rendering canvas control used for displaying 3D content.
/// </summary>
public RenderingCanvas RenderingCanvas => Content as RenderingCanvas;
/// <summary>
/// Ctor.
/// </summary>
public RenderingWindow()
{
Title = nameof(RenderingWindow);
Height = 450;
Width = 800;
StateChanged += RenderingWind_StateChanged;
Content = new RenderingCanvas()
{
BorderThickness = new Thickness(1),
BorderBrush = Brushes.Black
};
}
private void RenderingWind_StateChanged(object sender, EventArgs e)
{
RenderingCanvas.DispEngine.IsVisible = WindowState != WindowState.Minimized;
}
/// <inheritdoc/>
public DispEngine GetDispEngine() => RenderingCanvas.DispEngine;
/// <summary>
/// Gets or sets the current displayable 3D object.
/// When setting a new displayee, the view will be reset to home position if no previous displayee was set.
/// </summary>
public IDisplayee Displayee
{
get => GetDispEngine().Displayee;
set
{
var preDisplayee = GetDispEngine().Displayee;
GetDispEngine().Displayee = value;
if (preDisplayee == null)
RenderingCanvas.DispEngine.SetViewToHomeView();
}
}
}
}