Commit c04c5134 by 鲁志-悦动

修复鼠标拖滑块时再用UpDown键画面跳回的缺陷 And…

修复鼠标拖滑块时再用UpDown键画面跳回的缺陷 And 手动模式Replay时点击CAM_3、CAM_1的目标被选中是因为向算法发送坐标了,加个条件Replay时不发送坐标 And 入点拖框加宽高30限制 And 优化入点点中框求最小距离的逻辑发现求到四个方向比到中心点的好一些
parent 7d1befff
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;;
......
......@@ -1406,34 +1406,50 @@ namespace VIZ.FGOUT.Module
set { _sliderValue = value; this.RaisePropertyChanged(nameof(SliderValue)); }
}
private int _sliderStartValue = 120;
private int _sliderStartValue = 0;
public int SliderStartValue
{
get => (int)_sliderStartValue;
set
{
_sliderStartValue = value;
this.RaisePropertyChanged(nameof(SliderStartValue));
if (!_isReplayChecked)
{
var replayModel = new ReplayModel() { IsReplay = true, IsStartValue = true, SliderValue = value};
ApplicationDomain.MessageManager.Send(replayModel);
var nowDt = DateTime.Now;
var minus = (nowDt - _endDt).TotalMilliseconds;
if (minus > 450)
{
_sliderStartValue = value;
this.RaisePropertyChanged(nameof(SliderStartValue));
var replayModel = new ReplayModel() { IsReplay = true, IsStartValue = true, SliderValue = value };
ApplicationDomain.MessageManager.Send(replayModel);
_startDt = DateTime.Now;
}
}
}
}
private int _sliderEndValue = 240;
DateTime _startDt = DateTime.Now;
DateTime _endDt = DateTime.Now;
private int _sliderEndValue = 500;
public int SliderEndValue
{
get => (int)_sliderEndValue;
set
{
_sliderEndValue = value;
this.RaisePropertyChanged(nameof(SliderEndValue));
if (!_isReplayChecked)
{
var replayModel = new ReplayModel() { IsReplay = true, IsEndValue = true, SliderValue = value };
ApplicationDomain.MessageManager.Send(replayModel);
var nowDt = DateTime.Now;
var minus = (nowDt - _startDt).TotalMilliseconds;
if (minus > 450)
{
_sliderEndValue = value;
this.RaisePropertyChanged(nameof(SliderEndValue));
var replayModel = new ReplayModel() { IsReplay = true, IsEndValue = true, SliderValue = value };
ApplicationDomain.MessageManager.Send(replayModel);
}
_endDt = DateTime.Now;
}
}
}
......@@ -1837,13 +1853,11 @@ namespace VIZ.FGOUT.Module
if (context.hotkey.Equals(NDIMainViewHotkeys.Up))
{
SliderStartValue = NDIViewModel.SliderStartValue;
//SliderStartValue = _sliderStartInitValue;
_isDown = false;
}
else if (context.hotkey.Equals(NDIMainViewHotkeys.Down))
{
SliderEndValue = NDIViewModel.SliderEndValue;
//SliderEndValue = _sliderEndInitValue;
_isDown = true;
}
else if (context.hotkey.Equals(NDIMainViewHotkeys.Left))
......
......@@ -7,6 +7,8 @@ using System.Windows.Media;
using System.Windows.Shapes;
using VIZ.Framework.Common;
using VIZ.Framework.Core;
using VIZ.Framework.Domain;
using VIZ.Framework.Storage;
namespace VIZ.FGOUT.Module
{
......@@ -302,27 +304,30 @@ namespace VIZ.FGOUT.Module
// }
//}
if (vm.IsReplay)
{
if (_isMove)
{
_isMove = false;
aa = new PathGeometry();
if (!rectsReplay.Contains(rectReplay))
if (rectReplay.Width > 30 && rectReplay.Height > 30)
{
aa.AddGeometry(new RectangleGeometry(rectReplay));
rectsReplay.Add(rectReplay);
//if (rectsReplay.Count == 2)
// rectsReplay.RemoveAt(0);
var myPath = new Path()
if (!rectsReplay.Contains(rectReplay))
{
Fill = Brushes.Transparent,
Stroke = Brushes.Green,
StrokeThickness = 1,
Data = aa
};
canvas1.Children.Add(myPath);
aa.AddGeometry(new RectangleGeometry(rectReplay));
rectsReplay.Add(rectReplay);
//if (rectsReplay.Count == 2)
// rectsReplay.RemoveAt(0);
var myPath = new Path()
{
Fill = Brushes.Transparent,
Stroke = Brushes.Green,
StrokeThickness = 1,
Data = aa
};
canvas1.Children.Add(myPath);
}
}
}
else
......@@ -332,8 +337,20 @@ namespace VIZ.FGOUT.Module
//int resWith = ApplicationDomain.IniStorage.GetValue<VideoConfig, int>(p => p.VIDEO_WIDTH);
//double xp = this.video.ActualWidth / resWith;
//var x = startPoint.X / xp;
var srcWidth = this.video.ActualWidth;
var srcHeight = this.video.ActualHeight;
// 视频的宽度
int resWith = ApplicationDomain.IniStorage.GetValue<VideoConfig, int>(p => p.VIDEO_WIDTH);
// 视频的高度
int resHeight = ApplicationDomain.IniStorage.GetValue<VideoConfig, int>(p => p.VIDEO_HEIGHT);
double xp = srcWidth / resWith;
double xy = srcHeight / resHeight;
var x = Convert.ToInt32(startPoint.X / xp);
var y = Convert.ToInt32(startPoint.Y / xy);
//最小距离
double minDistance = 10000;
double minDistance = 1920;
saveInfo = new TrackingBoxInfo();
//当有跟踪框的时候,就不用拖一个出来了
if (NDIViewModel._cam3StaticInfos.Count > 0)
......@@ -343,10 +360,10 @@ namespace VIZ.FGOUT.Module
if (info.SrcRect.Left >= 0 && info.SrcRect.Right >= 0 && info.SrcRect.Top >= 0 && info.SrcRect.Bottom >= 0)
{
//计算四个方向到点的距离取绝对值
//var difference = Math.Abs(startPoint.X - info.SrcRect.Left) + Math.Abs(info.SrcRect.Right - startPoint.X)
// + Math.Abs(startPoint.Y - info.SrcRect.Top) + Math.Abs(info.SrcRect.Bottom - startPoint.Y);
var difference = Math.Abs(x - info.SrcRect.Left) + Math.Abs(info.SrcRect.Right - x)
+ Math.Abs(y - info.SrcRect.Top) + Math.Abs(info.SrcRect.Bottom - y);
//计算点到矩形中心点的距离的绝对值
var difference = Math.Abs(startPoint.X - (info.SrcRect.Right - info.SrcRect.Left) / 2) + Math.Abs(startPoint.Y - (info.SrcRect.Bottom - info.SrcRect.Top) / 2);
//var difference = Math.Abs(x - (info.SrcRect.Right - info.SrcRect.Left)) + Math.Abs(y - (info.SrcRect.Bottom - info.SrcRect.Top));
if (difference < minDistance)
{
saveInfo = info;
......
......@@ -178,8 +178,11 @@ namespace VIZ.FGOUT.Module
/// </summary>
private void TrackingBoxPlugin_TrackingBoxClick(object sender, TrackingBoxClickEventArgs e)
{
//Replay时,不发送坐标
if (IsReplay)
return;
//无效位置按钮按下时,不发送坐标
if(IsDrawInvalidPlace)
if (IsDrawInvalidPlace)
return;
if (e.HitTrackingBoxInfo == null)
return;
......
......@@ -23,7 +23,7 @@ namespace VIZ.FGOUT.Module
private readonly FrameBuffer _frameBuffer = new FrameBuffer(TimeSpan.FromSeconds(10));
private readonly TrackingBoxInfoBuffer _trackingBoxInfoBuffer =
new TrackingBoxInfoBuffer(TimeSpan.FromSeconds(30));
new TrackingBoxInfoBuffer(TimeSpan.FromSeconds(90));
public List<TrackingBoxInfo> _cam3Infos = new List<TrackingBoxInfo>();
......@@ -430,7 +430,7 @@ namespace VIZ.FGOUT.Module
{
buffer.Enqueue(frame);
// 如果缓冲区超过容量,则移除最旧的帧
if (buffer.Count > 1500)
if (buffer.Count > 4500)
buffer.Dequeue();
}
......

C:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Module\obj\x64\Debug\GeneratedInternalTypeHelper.g.cs
FC:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Module\NDIMainView\View\NDIMainView.xaml;;
FC:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Module\NDIPreviewView\View\NDIPreviewView.xaml;;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
//------------------------------------------------------------------------------
// <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);
}
}
}


C:\Projects\FGOUT\VIZ.Framework\VIZ.Framework.Common\obj\x64\Debug\GeneratedInternalTypeHelper.g.cs
FC:\Projects\FGOUT\VIZ.Framework\VIZ.Framework.Common\MessageBox\MessageBoxEx.xaml;;
FC:\Projects\FGOUT\VIZ.Framework\VIZ.Framework.Common\MessageBox\MessageBoxExWindow.xaml;;
......
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