using Panuon.WPF.UI; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace Plugin.TsExecution { /// /// ScreenTouchWin.xaml 的交互逻辑 /// public partial class ScreenTouchWin : WindowX { private ScreenGrid screenGrid; private ScreenTouch[] screens; public ScreenTouchWin(ScreenTouch[] configs) { screenGrid = new ScreenGrid(1, configs.Length); screens = new ScreenTouch[configs.Length]; InitializeComponent(); int space = 2 * (screens.Length + 1); for (int i = 0; i < screens.Length; i++) { var screen = new ScreenTouch(configs[i].rows, configs[i].columns) { Width = Math.Max(Math.Floor((this.ActualHeight / 9 * 16 - space) / screens.Length), 0), Height = Math.Max(Math.Floor((this.ActualHeight / 9 * 16 - space) / screens.Length / 16 * 9), 0) }; screen.SetBinding(ScreenTouch.ValuesProperty, new Binding(nameof(ScreenTouch.Values)) { Source = configs[i], Mode = BindingMode.OneWay }); screens[i] = screen; screenGrid.AddScreen(screen, 0, i); } grid.Children.Add(screenGrid); } private void Window_SizeChanged(object sender, SizeChangedEventArgs e) { if (screenGrid == null) { return; } int space = 2 * (screens.Length + 1); for (int i = 0; i < screens.Length; i++) { var screen = screens[i]; screen.Width = Math.Max(Math.Floor((this.ActualHeight / 9 * 16 - space) / screens.Length), 0); screen.Height = Math.Max(Math.Floor((this.ActualHeight / 9 * 16 - space) / screens.Length / 16 * 9), 0); } } } }