Commit 94068ecf by 鲁志-悦动

点击Replay会定位到按热键入点的位置

parent 1359d5ee

//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace XamlGeneratedNamespace {
/// <summary>
/// GeneratedInternalTypeHelper
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
/// <summary>
/// CreateInstance
/// </summary>
protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic)
| (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
}
/// <summary>
/// GetPropertyValue
/// </summary>
protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// SetPropertyValue
/// </summary>
protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// CreateDelegate
/// </summary>
protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod
| (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
delegateType,
handler}, null)));
}
/// <summary>
/// AddEventHandler
/// </summary>
protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
eventInfo.AddEventHandler(target, handler);
}
}
}
......@@ -10,11 +10,11 @@ none
false
21870986562
2-725104376
31364711570
17-1683084370
3947974750
17-1462717611
Themes\Generic.xaml;Widgets\FootballFieldPanel\FootballFieldPanel.xaml;
False
True
C:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Common\obj\x64\Debug\GeneratedInternalTypeHelper.g.cs

FC:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Common\Themes\Generic.xaml;;
FC:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Common\Widgets\FootballFieldPanel\FootballFieldPanel.xaml;;
......
......@@ -7,7 +7,11 @@
public class ReplayModel
{
public bool IsReplay { get; set; }
public bool IsReplayStarted { get; set; }
public int SliderValue { get; set; }
public bool IsSliderValueChanged { get; set; }
}
}
......@@ -155,13 +155,15 @@ namespace VIZ.FGOUT.Module
//Replay入点命令
if (string.Equals(this.Support.HotkeyConfig.I, hotkey))
{
return AssembleHotkeyModeCam3(NDIViewHotkeys.I);
// return AssembleHotkeyModeCam3(NDIViewHotkeys.I);
return AssembleHotkeyMode(NDIViewHotkeys.I);
}
//Replay出点命令
if (string.Equals(this.Support.HotkeyConfig.O, hotkey))
{
return AssembleHotkeyModeCam3(NDIViewHotkeys.O);
//return AssembleHotkeyModeCam3(NDIViewHotkeys.O);
return AssembleHotkeyMode(NDIViewHotkeys.O);
}
//位置标记删除命令
......
......@@ -1157,12 +1157,12 @@
Grid.Column="0"
Visibility="{Binding SliderVisibility}">
<local:SliderArrange
EndValue="240"
EndValue="{Binding SliderEndValue, Mode=TwoWay}"
Maximum="500"
Minimum="0"
SliderHeight="30"
SliderWidth="810"
StartValue="120"
StartValue="{Binding SliderStartValue, Mode=TwoWay}"
Visibility="{Binding SliderVisibility}" />
</Grid>
</Grid>
......
......@@ -728,7 +728,7 @@ namespace VIZ.FGOUT.Module
ReplaySendVisibility = Visibility.Visible;
SliderVisibility = Visibility.Visible;
SliderValue = SliderMaxValue;
var replayModel = new ReplayModel() { IsReplay = true };
var replayModel = new ReplayModel() { IsReplay = true, IsReplayStarted = true};
ApplicationDomain.MessageManager.Send(replayModel);
var manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1__CLIP);
......@@ -1329,6 +1329,20 @@ namespace VIZ.FGOUT.Module
set { _sliderValue = value; this.RaisePropertyChanged(nameof(SliderValue)); }
}
private int _sliderStartValue;
public int SliderStartValue
{
get => (int)_sliderStartValue;
set { _sliderStartValue = value; this.RaisePropertyChanged(nameof(SliderStartValue)); }
}
private int _sliderEndValue;
public int SliderEndValue
{
get => (int)_sliderEndValue;
set { _sliderEndValue = value; this.RaisePropertyChanged(nameof(SliderEndValue)); }
}
private int _sliderValue2 = 150;
public int SliderValue2
{
......
......@@ -160,39 +160,44 @@ namespace VIZ.FGOUT.Module
//}
//滑块开始、结束热键
if (view.vm.IsSliderStartClicked)
{
SliderStartTimeStamp = e.Frame.TimeStamp;
view.vm.IsSliderStartClicked = false;
}
else if (view.vm.IsSliderEndClicked)
{
SliderEndTimeStamp = e.Frame.TimeStamp;
view.vm.IsSliderEndClicked = false;
}
//Replay
if (view.vm.IsReplay)
{
if (view.vm.IsSliderValueChanged)
if (view.vm.IsReplayStarted)
{
view.vm.IsReplayStarted = false;
//if (view.vm.IsSliderValueChanged)
//{
Queue<MatExtend> buffer = _frameBuffer.GetFrames();
if (buffer.Count > 0)
{
var index = view.vm.SliderValue;
var index = 0;
foreach (var matExtend in buffer)
{
index++;
if (matExtend.TimeStamp == SliderStartTimeStamp)
break;
}
view.vm.SliderStartValue = index;
//var index = view.vm.SliderValue;
if (index >= 500) index = 499;
if ((buffer.Count - 1) >= index)
{
var dse = buffer.ElementAt(index);
#region 注释的代码
//缓存策略2
//将低分辨率的Mat对象转换为DataStream
//byte[] lowResolutionData = new byte[dse.Width * dse.Height * 4];
//var newLength = lowResolutionData.Length;
//Marshal.Copy(dse.Data, lowResolutionData, 0, newLength);
//DataStreamExtend dsExtend = new DataStreamExtend();
//dsExtend.DataStream = new DataStream((int)newLength, true, true);
//dsExtend.DataStream.Write(lowResolutionData, 0, newLength);
//dsExtend.DataStream.Position = 0;
//dsExtend.Width = dse.Width;
//dsExtend.Height = dse.Height;
//dsExtend.Length = newLength;
//之前的逻辑好奇怪,时间戳也要保存到队列的,不能用当前的时间戳
//dsExtend.TimeStamp = NDIViewModel.ReplayTimeStamp = e.Frame.TimeStamp;
#endregion
var lowResolutionData = new byte[dse.Mat.Width * dse.Mat.Height * 4];
var newLength = lowResolutionData.Length;
Marshal.Copy(dse.Mat.Data, lowResolutionData, 0, newLength);
......@@ -223,6 +228,7 @@ namespace VIZ.FGOUT.Module
//view.video.UpdateVideoFrame(dse, true);
}
}
//}
}
}
else
......@@ -289,8 +295,6 @@ namespace VIZ.FGOUT.Module
// 更新画面
view.video.UpdateVideoFrame(e.Frame);
// 更新手动裁切框
// 仅手动模式下处理 & 居中模式下处理 & 需要进行裁切时才处理
if ((this.StrategyMode == AlgorithmStrategyMode.center_mode || this.StrategyMode == AlgorithmStrategyMode.manual_mode) && this.IsUseClip)
......
......@@ -164,7 +164,7 @@ namespace VIZ.FGOUT.Module
// 保存位置发送命令
ApplicationDomain.MessageManager.Register<SavePlaceModel>(this, this.SavePlace);
// 调用Replay发送命令
// 调用Replay命令
ApplicationDomain.MessageManager.Register<ReplayModel>(this,this.Replay);
// 调用UESetting发送命令
......@@ -355,16 +355,25 @@ namespace VIZ.FGOUT.Module
public int SliderValue;
public bool IsSliderValueChanged;
public bool IsReplay;
public bool IsReplayStarted;
public bool IsSliderStartClicked;
public bool IsSliderEndClicked;
public long SliderStartTimeStamp;
public long SliderEndTimeStamp;
public int SliderStartValue;
public int SliderEndValue;
/// <summary>
/// replay 命令
/// Replay选中和SliderValueChanged传值共用这一个方法
/// </summary>
private void Replay(ReplayModel replayModel)
private void Replay(ReplayModel replayModel)
{
if (this.ViewKey == NDIViewKeys.CAM_2)
return;
IsReplayStarted = replayModel.IsReplayStarted;
IsReplay = replayModel.IsReplay;
if (IsReplay)
_autoSend_Timer.Stop();
_autoSend_Timer.Stop();//自动发送计时器取消
IsSliderValueChanged = replayModel.IsSliderValueChanged;
SliderValue = replayModel.SliderValue;
}
......@@ -1447,10 +1456,14 @@ namespace VIZ.FGOUT.Module
public void NDIViewHotkeyMode(NDIViewHotkeyContext context)
{
//if (context.hotkey.Equals(NDIViewHotkeys.I))
// StartTime = ReplayTimeStamp;
//if (context.hotkey.Equals(NDIViewHotkeys.O))
// EndTime = ReplayTimeStamp;
if (context.hotkey.Equals(NDIViewHotkeys.I))
StartTime = ReplayTimeStamp;
IsSliderStartClicked = true;
if (context.hotkey.Equals(NDIViewHotkeys.O))
EndTime = ReplayTimeStamp;
IsSliderEndClicked =true;
if (context.hotkey.Equals(NDIViewHotkeys.Delete))
DeletePositionMarker();
}
......
#pragma checksum "..\..\..\..\..\NDIMainView\View\NDIMainView.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "44CC33A548CF90A5FEB7A51A31499592C3E1B0D6727A9B025968B75518C6D5C8"
#pragma checksum "..\..\..\..\..\NDIMainView\View\NDIMainView.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "BA45359DEBE104D5559D3FAE8AF08CE958BED95BFD327E141845FDF99A44BCEC"
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
......
#pragma checksum "..\..\..\..\..\NDIMainView\View\NDIMainView.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "44CC33A548CF90A5FEB7A51A31499592C3E1B0D6727A9B025968B75518C6D5C8"
#pragma checksum "..\..\..\..\..\NDIMainView\View\NDIMainView.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "BA45359DEBE104D5559D3FAE8AF08CE958BED95BFD327E141845FDF99A44BCEC"
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment