47 lines
1.3 KiB
C#
47 lines
1.3 KiB
C#
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));
|
|
}
|
|
}
|