Add stop trigger

This commit is contained in:
huiyadanli
2023-09-28 16:05:11 +08:00
parent 0c02088bf4
commit 1a06f34826
4 changed files with 55 additions and 43 deletions

View File

@@ -98,7 +98,6 @@ namespace BetterGenshinImpact.GameTask.AutoFishing
var grayMat = content.SrcGreyMat;
var grayRightBottomMat = CutHelper.CutRightBottom(grayMat, grayMat.Width / 3, grayMat.Height / 5);
var p = MatchTemplateHelper.FindSingleTarget(grayRightBottomMat, AutoFishingAssets.SpaceButtonMat);
Cv2.ImWrite("1.png", grayMat);
return p is { X: > 0, Y: > 0 };
}

View File

@@ -95,12 +95,7 @@ namespace BetterGenshinImpact.GameTask
}
// 捕获游戏画面
//var sw = new Stopwatch();
//sw.Start();
var bitmap = _capture.Capture();
//sw.Stop();
//Debug.WriteLine("截图耗时:" + sw.ElapsedMilliseconds);
if (bitmap == null)
{
_logger.LogWarning("截图失败!");

View File

@@ -6,7 +6,7 @@
xmlns:b="http://schemas.microsoft.com/xaml/behaviors"
xmlns:viewModel="clr-namespace:BetterGenshinImpact.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="200" Width="300">
Title="更好的原神Alpha1" Height="300" Width="300">
<Window.DataContext>
<viewModel:MainWindowViewModel />
</Window.DataContext>
@@ -23,12 +23,17 @@
</b:EventTrigger>
</b:Interaction.Triggers>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="26*"/>
<ColumnDefinition Width="49*"/>
</Grid.ColumnDefinitions>
<ComboBox x:Name="CboCaptureType" HorizontalAlignment="Left" Height="23" Margin="10,20,0,0"
VerticalAlignment="Top" Width="252" ItemsSource="{Binding ModeNames}"
SelectedItem="{Binding SelectedMode, Mode=TwoWay}" />
<Button x:Name="StartCaptureTest" Content="测试图像捕获" Command="{Binding StartCaptureTestCommand}" HorizontalAlignment="Left" Margin="10,55,0,0" VerticalAlignment="Top" Height="22" Width="252"/>
SelectedItem="{Binding SelectedMode, Mode=TwoWay}" Grid.ColumnSpan="2" />
<Button x:Name="StartCaptureTest" Content="测试图像捕获" Command="{Binding StartCaptureTestCommand}" HorizontalAlignment="Left" Margin="10,55,0,0" VerticalAlignment="Top" Height="22" Width="252" Grid.ColumnSpan="2"/>
<Button x:Name="StartTrigger" Content="启动触发器(自动剧情、钓鱼)" Command="{Binding StartTriggerCommand}" HorizontalAlignment="Left" Margin="10,106,0,0" VerticalAlignment="Top" Height="33" Width="252" Grid.ColumnSpan="2" />
<Button x:Name="StopTrigger" Content="关闭触发器" Command="{Binding StopTriggerCommand}" HorizontalAlignment="Left" Margin="10,152,0,0" VerticalAlignment="Top" Height="33" Width="252" Grid.ColumnSpan="2" />
<Button x:Name="StartTrigger" Content="启动触发器(自动剧情、钓鱼)" Command="{Binding StartTriggerCommand}" HorizontalAlignment="Left" Margin="10,106,0,0" VerticalAlignment="Top" Height="33" Width="252" />
</Grid>
</Window>

View File

@@ -28,6 +28,8 @@ namespace BetterGenshinImpact.ViewModel
private MaskWindow? _maskWindow;
private readonly ILogger<MainWindowViewModel> _logger = App.GetLogger<MainWindowViewModel>();
private TaskDispatcher _taskDispatcher = new();
[RelayCommand]
private void OnLoaded()
@@ -71,46 +73,57 @@ namespace BetterGenshinImpact.ViewModel
MessageBox.Show("请选择捕获方式");
return;
}
new TaskDispatcher().Start(SelectedMode.ToCaptureMode());
_taskDispatcher.Start(SelectedMode.ToCaptureMode());
}
private void TestRect()
[RelayCommand]
private void OnStopTrigger()
{
var hWnd = SystemControl.FindGenshinImpactHandle();
if (hWnd == IntPtr.Zero)
if (SelectedMode == null)
{
MessageBox.Show("未找到原神窗口");
MessageBox.Show("请选择捕获方式");
return;
}
User32.GetWindowRect(hWnd, out var rect);
//var x = rect.X;
//var y = rect.Y;
//var w = rect.Width;
//var h = rect.Height;
var x = (int)Math.Ceiling(rect.X * PrimaryScreen.ScaleX);
var y = (int)Math.Ceiling(rect.Y * PrimaryScreen.ScaleY);
var w = (int)Math.Ceiling(rect.Width * PrimaryScreen.ScaleX);
var h = (int)Math.Ceiling(rect.Height * PrimaryScreen.ScaleY);
Debug.WriteLine($"原神窗口大小:{rect.Width} x {rect.Height}");
Debug.WriteLine($"原神窗口大小(计算DPI缩放后){w} x {h}");
User32.GetClientRect(hWnd, out var clientRect);
var cx = clientRect.X;
var cy = clientRect.Y;
var cw = clientRect.Width;
var ch = clientRect.Height;
Debug.WriteLine($"原神窗口内控件大小:{clientRect.Width} x {clientRect.Height}");
var h2 = User32.GetSystemMetrics(User32.SystemMetric.SM_CYFRAME);
var h3 = User32.GetSystemMetrics(User32.SystemMetric.SM_CYCAPTION);
_logger.LogInformation($"标题栏高度: {h2} {h3}");
_taskDispatcher.Stop();
}
//private void TestRect()
//{
// var hWnd = SystemControl.FindGenshinImpactHandle();
// if (hWnd == IntPtr.Zero)
// {
// MessageBox.Show("未找到原神窗口");
// return;
// }
// User32.GetWindowRect(hWnd, out var rect);
// //var x = rect.X;
// //var y = rect.Y;
// //var w = rect.Width;
// //var h = rect.Height;
// var x = (int)Math.Ceiling(rect.X * PrimaryScreen.ScaleX);
// var y = (int)Math.Ceiling(rect.Y * PrimaryScreen.ScaleY);
// var w = (int)Math.Ceiling(rect.Width * PrimaryScreen.ScaleX);
// var h = (int)Math.Ceiling(rect.Height * PrimaryScreen.ScaleY);
// Debug.WriteLine($"原神窗口大小:{rect.Width} x {rect.Height}");
// Debug.WriteLine($"原神窗口大小(计算DPI缩放后){w} x {h}");
// User32.GetClientRect(hWnd, out var clientRect);
// var cx = clientRect.X;
// var cy = clientRect.Y;
// var cw = clientRect.Width;
// var ch = clientRect.Height;
// Debug.WriteLine($"原神窗口内控件大小:{clientRect.Width} x {clientRect.Height}");
// var h2 = User32.GetSystemMetrics(User32.SystemMetric.SM_CYFRAME);
// var h3 = User32.GetSystemMetrics(User32.SystemMetric.SM_CYCAPTION);
// _logger.LogInformation($"标题栏高度: {h2} {h3}");
//}
private void TestMask()
{
var hWnd = SystemControl.FindGenshinImpactHandle();