namespace Yw.WpfUI.Hydro
|
{
|
/// <summary>
|
/// 抽象高亮辅助类
|
/// </summary>
|
internal class LogicalHighlightHelper
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public LogicalHighlightHelper(HelixViewport3D viewport)
|
{
|
_viewport = viewport;
|
}
|
|
/// <summary>
|
/// 状态改变事件
|
/// </summary>
|
public event Action<LogicalVisual3D, bool> StateChangedEvent;
|
|
private readonly HelixViewport3D _viewport = null;//三维组件
|
private LogicalVisual3D _logicalVisual;//当前高亮的Visual
|
|
|
/// <summary>
|
/// 高亮
|
/// </summary>
|
public void Highlight(Point pt)
|
{
|
var logicalVisual = _viewport.FindNearestVisual(pt) as LogicalVisual3D;
|
if (logicalVisual == null)
|
{
|
Reset();
|
return;
|
}
|
if (_logicalVisual == logicalVisual)
|
{
|
return;
|
}
|
Reset();
|
_logicalVisual = logicalVisual;
|
this.StateChangedEvent?.Invoke(_logicalVisual, true);
|
}
|
|
//重置
|
private void Reset()
|
{
|
if (_logicalVisual != null)
|
{
|
this.StateChangedEvent?.Invoke(_logicalVisual, false);
|
_logicalVisual = null;
|
}
|
}
|
|
|
|
|
|
}
|
}
|