using System.Windows; using System.Windows.Controls; using System.Windows.Input; using XP.Camera.Calibration.ViewModels; namespace XP.Camera.Calibration.Controls; public partial class ChessboardCalibrationControl : UserControl { private ChessboardCalibrationViewModel? _viewModel; public ChessboardCalibrationControl() { InitializeComponent(); Loaded += ChessboardCalibrationControl_Loaded; } private void ChessboardCalibrationControl_Loaded(object sender, RoutedEventArgs e) { if (DataContext is ChessboardCalibrationViewModel viewModel) { _viewModel = viewModel; _viewModel.ImageLoadedRequested += (s, e) => { imageCanvas.ReferenceImage = _viewModel.ImageSource; }; _viewModel.ImageClearedRequested += (s, e) => { imageCanvas.ReferenceImage = null; }; imageCanvas.CanvasMouseWheel += ImageCanvas_MouseWheel; } } private void ImageCanvas_MouseWheel(object? sender, MouseWheelEventArgs e) { if (_viewModel?.ImageSource == null) return; double zoom = e.Delta > 0 ? 1.1 : 0.9; imageCanvas.ZoomScale *= zoom; imageCanvas.ZoomScale = Math.Max(0.1, Math.Min(imageCanvas.ZoomScale, 10)); } }