57 lines
1.7 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|